您可能希望将Spring包含在您正在考虑的依赖注入框架列表中。以下是您问题的一些答案:
耦合到框架
Pico - Pico倾向于阻止二传注射,但除此之外,您的课程不需要了解Pico。只有布线需要知道(适用于所有DI框架)。
Guice - Guice 现在支持标准的 JSR 330 注释,因此您的代码中不再需要特定于 Guice 的注释。Spring还支持这些标准注释。Guice人员使用的论点是,如果没有运行Guice注释处理器,如果您决定使用其他框架,这些处理器应该不会产生影响。
Spring - Spring旨在允许您避免在代码中提及Spring框架。因为他们确实有很多其他的助手/实用程序等,所以依赖Spring代码的诱惑非常强烈。
性能
笔克 - 我不太熟悉笔克的速度特点
Guice - Guice被设计得很快,参考文献中提到的比较有一些数字。当然,如果速度是首要考虑因素,则应考虑使用Guice或手动布线
春天 - 春天可能很慢。已经有工作使它更快,使用JavaConfig库应该可以加快速度。
易用性
Pico - 易于配置。笔克可以为您做出一些自动布线决定。不清楚它如何扩展到非常大的项目。
Guice - 易于配置,您只需添加注释并从 AbstractModule 继承即可将内容绑定在一起。可很好地扩展到大型项目,因为配置保持在最低限度。
Spring - 相对容易配置,但大多数示例使用Spring XML作为配置方法。随着时间的推移,Spring XML文件可能会变得非常大和复杂,并且需要一些时间来加载。考虑使用弹簧和手摇依赖注入的混合来克服这一点。
社区规模
笔克 - 小
吉斯 - 中
弹簧 - 大
经验
笔克 - 我对笔克没有太多经验,但它不是一个广泛使用的框架,所以很难找到资源。
Guice - Guice是一个流行的框架,当你有一个大型项目在开发中重新启动时,它对速度的关注是受欢迎的。我对配置的分布式性质感到担忧,即不容易看到我们的整个应用程序是如何组合在一起的。在这方面,它有点像AOP。
春天 - 春天通常是我的默认选择。也就是说,XML可能会变得很麻烦,并且由此产生的减速令人讨厌。我经常最终使用手工制作的依赖注入和弹簧的组合。当你真正需要基于XML的配置时,Spring XML是相当不错的。Spring还投入了大量精力来使其他框架更加依赖注入友好,这可能很有用,因为它们在这样做时经常使用最佳实践(JMS,ORM,OXM,MVC等)。
引用