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