小编典典

Google Guice与PicoContainer进行依赖注入

java

我的团队正在研究依赖项注入框架,并试图在使用Google-Guice和PicoContainer之间做出选择。

我们正在寻找框架中的几件事情:

  1. 较小的代码占用空间-我的意思是较小的代码占用空间是我们不想在我们的代码库中到处都有依赖项注入代码垃圾。如果我们需要在将来进行重构,我们希望它尽可能简单。
  2. 性能-创建和注入对象时,每个框架有多少开销?
  3. 易于使用-学习曲线是否很大?我们是否必须编写大量代码才能使一些简单的工作完成?我们希望配置尽可能少。
  4. 社区规模-较大的社区通常意味着将继续维护项目。我们不想使用框架,而不得不修复我们自己的错误;)此外,框架的开发人员/用户社区也可以(希望)回答我们所遇到的任何问题。

将两个框架与所列标准进行比较将不胜感激。任何有助于将两者进行比较的个人经验也将非常有帮助。

免责声明:我对依赖注入还相当陌生,因此如果我提出的问题与本次讨论无关,请原谅我。


阅读 311

收藏
2020-11-01

共1个答案

小编典典

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

参考文献

2020-11-01