您可能希望将Spring加入您考虑的依赖注入框架列表中。以下是一些问题的答案:
与框架的耦合
Pico - Pico倾向于不鼓励使用setter注入,但除此之外,您的类不需要了解Pico。只有需要了解装配的部分需要知道(对于所有DI框架都是如此)。
Guice - Guice现在支持标准JSR 330注释,因此您不再需要在代码中使用Guice特定的注释。Spring也支持这些标准注释。Guice的开发人员认为,如果没有运行Guice注释处理器,这些注释不应该对您决定使用其他框架产生影响。
Spring - Spring旨在允许您避免在代码中提到Spring框架。因为他们有很多其他的帮助程序/实用工具等等,所以依赖Spring代码的诱惑相当强烈。
性能
Pico - 我不太熟悉Pico的速度特性。
Guice - Guice被设计成快速的,参考文献中提到了一些数字进行比较。如果速度是主要考虑因素之一,应该考虑使用Guice或手动装配。
Spring - Spring可能会比较慢。已经有工作来加快速度,使用JavaConfig库可以提高速度。
易用性
Pico - 简单易配置。Pico可以为您做一些自动装配的决策。不清楚它如何适用于非常大的项目。
Guice - 简单易配置,只需添加注释并从AbstractModule继承以将其绑定在一起。随着配置最小化,适用于大型项目的规模扩展良好。
Spring - 相对容易配置,但大多数示例使用Spring XML作为配置方法。Spring XML文件随着时间的推移可能变得非常庞大和复杂,并且需要加载时间。考虑使用Spring和手工制作的依赖注入的混合来克服这个问题。
社区规模
Pico - 小型
Guice - 中等规模
Spring - 大型
经验
Pico - 我没有太多关于Pico的经验,但它不是一个广泛使用的框架,因此很难找到资源。
Guice - Guice是一个流行的框架,当你在开发中频繁重启大型项目时,它的速度优势是受欢迎的。我担心配置的分布式性质,即很难看到我们整个应用程序是如何组合在一起的。在这方面有点像AOP。
Spring - Spring通常是我的默认选择。话虽如此,XML可能会变得繁琐,导致速度变慢让人感到烦恼。我经常使用手工制作的依赖注入和Spring的组合。当您真正需要基于XML的配置时,Spring XML非常好用。Spring还投入了大量精力使其他框架更具有依赖注入友好性,这可能很有用,因为它们在这样做时经常使用最佳实践(JMS、ORM、OXM、MVC等)。
参考文献