您可能希望将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等)。
参考文献