我的团队正在研究依赖项注入框架,并试图在使用Google-Guice和PicoContainer之间做出选择。
我们正在寻找框架中的几件事情:
将两个框架与所列标准进行比较将不胜感激。任何有助于将两者进行比较的个人经验也将非常有帮助。
免责声明:我对依赖注入还相当陌生,因此如果我提出的问题与本次讨论无关,请原谅我。
您可能希望将Spring纳入您正在考虑的Dependency Injection框架列表中。以下是您问题的一些答案:
Pico -Pico往往会阻止二传手的注入,但除此之外,您的课程无需了解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。
春季 -春季通常是我的默认选择。就是说,XML可能变得很繁琐,并且导致速度变慢。我经常最终将手工制作的依赖注入和Spring结合使用。当您实际上需要基于XML的配置时,Spring XML相当不错。Spring还付出了很多努力来使其他框架更加依赖于依赖项注入,这很有用,因为这样做时它们经常使用最佳实践(JMS,ORM,OXM,MVC等)。