java - 纯 Java 中的依赖注入(inject)

标签 java dependency-injection frameworks inversion-of-control

我有一个用 Java SE (JdK 1.7) 编写的大型应用程序。但它越来越难维护。我认为在这个项目中引入 DI 是个不错的主意。只要我有 Java EE 框架的经验,我就想知道,当一个人不使用任何容器(如 Glassfish 或 Spring 框架)时,实现依赖注入(inject)的最常见方法是什么。我阅读了有关 Weld 和 Guice 的信息,但不知道哪个更好,而且在容器外单独使用 DI 这样的技术是否“正常”。

我如何从 Java SE7 中的 IoC 中获益,它是否合理?如果是,那么在这样一个普通项目中使用哪个库进行 DI?

最佳答案

我用过 Guice(很多)和 Spring(有一点)。

Spring 很大但模块化。这意味着如果你只想要一点点,你可以将它设置为只使用一点点,因为所有其他模块都遵循核心中使用的相同模式,你可以轻松地选择它们。然而,教程等可能会在大范围内蜿蜒进入 Spring,这可能会使事情变得困惑。

Guice 小而有针对性。它只包含一点点,所以很容易学习。但是,当您想要更多时,却无济于事。

如果您想快速上手并且没有任何人使用 Spring XP,那么 IMO Guice 是个不错的选择。虽然它的教程较少,但它也更容易让您动脑筋,而且教程通常更有针对性。

如果您已经有人使用 Spring XP,或者您打算在短期内使用更多 Spring-y 优点,那么 Spring 是个不错的选择。

关于java - 纯 Java 中的依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19636458/

相关文章:

java - 我可以将 SessionBean 注入(inject) Java EE AroundInvoke-Interceptor 吗?

c# - 在 Entity Framework Core 中创建迁移时如何配置 DbContext?

css - Foundation Framework 屏幕兼容性问题

ios - 如何为您的 Swift 框架私下导入第 3 方框架

java - 使用 JACOB (Java) 保存 Word 文档

java - 转换后的纬度/经度值中的小数位数(使用 Location.convert 方法)

java - Java导入了.jar文件,但jar的类对象无法解析

javascript - 为什么 AngularJS 无法解决这种依赖关系

c# - 如何使用 Rx 异步查询 Twitter 搜索?

java - 转换日期时出现异常