Google Guice与PicoContainer进行依赖注入
我的团队正在研究依赖注入框架,并试图决定使用Google-Guice还是PicoContainer。
我们正在寻找我们框架中的几件事情:
对比两个框架与列出的标准将不胜感激。 任何有助于比较两者的个人经验也会非常有帮助。
免责声明:如果我问了一个与本次讨论无关的问题,我相当注意依赖注入,所以请原谅我的小心。
您可能希望将Spring纳入您正在考虑的依赖注入框架列表中。 以下是您的问题的一些答案:
耦合到框架
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和手动混合的依赖注入来克服这一点。
社区大小
皮科 - 小
吉斯 - 中等
春天 - 大
经验
Pico - 我没有太多的Pico经验,但它不是一个广泛使用的框架,所以它会更难找到资源。
Guice - Guice是一个流行的框架,当你有一个大型项目在开发中重新启动时,它对速度的关注非常受欢迎。 我对配置的分布式特性表示担忧,即不容易看到我们的整个应用程序如何组合在一起。 这在这方面有点像AOP。
春天 - 春天通常是我的默认选择。 也就是说,XML可能变得繁琐,导致减速烦人。 我经常最终使用手工制作的依赖注入和Spring的组合。 当你真的需要基于XML的配置时,Spring XML非常好。 Spring还花费了大量的精力来使其他框架更友好,因为它们通常在使用最佳实践(JMS,ORM,OXM,MVC等)时非常有用。
参考
Jamie.mccrindle提供的答案其实很不错,但我很困惑,为什么Spring很明显是优先选择(包括Pico和Guice),Spring是默认选择。 IMO Spring的受欢迎程度已经达到了顶峰,现在它正在生成炒作(与其他所有“我也一样”的春季子项目都希望能够顺应春季潮流)。
Spring的唯一真正优势是社区规模(坦率地说,由于规模和复杂性,这是必要的),但Pico和Guice不需要庞大的社区,因为他们的解决方案更清洁,更有组织,更优雅。 Pico似乎比Guice更灵活(您可以在Pico中使用注释,或者不使用 - 它非常高效)。 (编辑:意思是说它非常灵活,并不是说它不是很有效。)
Pico的小尺寸和缺乏依赖性是一个不容小觑的主要胜利。 现在需要下载多少个megs来使用Spring? 这是一个巨大的JAR文件混乱,所有它的依赖。 直觉地认为,这样一个有效的“小”解决方案应该比Spring更好地执行扩展和执行。 春天的膨胀真的会让它变得更好吗? 这是奇怪的世界吗? 我不会假设Spring是“更可扩展的”,直到经过验证(并解释)为止。
有时候创造一些好的东西(Pico / Guice),然后保持你的HANDS关闭,而不是增加无限的新版本的膨胀和厨房水槽功能,真的可以解决......
注意:这是比评论/咆哮更多的回答
PicoContainer非常棒。 如果他们只是修复他们的网站,我会切换回去。 现在非常混乱:
我现在使用Guice 2.x,尽管它更大,功能更少。 查找文档要容易得多,而且用户组非常活跃。 然而,如果Guice 3的方向有任何迹象,那么Guice开始臃肿起来,就像Spring早年回归一样。
更新:我向Pico Container人员发布了评论,他们对网站进行了一些改进。 现在好多了!
链接地址: http://www.djcxy.com/p/82269.html上一篇: Google Guice vs. PicoContainer for Dependency Injection