我有一个用 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/