gpt4 book ai didi

java - Google Guice 与 PicoContainer 的依赖注入(inject)

转载 作者:IT老高 更新时间:2023-10-28 11:28:48 26 4
gpt4 key购买 nike

我的团队正在研究依赖注入(inject)框架,并试图在使用 Google-Guice 和 PicoContainer 之间做出决定。

我们正在我们的框架中寻找几样东西:

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

非常感谢根据所列标准对这两个框架进行比较。任何有助于比较两者的个人经历也会非常有帮助。

免责声明:我对依赖注入(inject)相当陌生,所以如果我问了一个与本次讨论无关的问题,请原谅我的菜鸟。

最佳答案

您可能希望将 Spring 包含在您正在考虑的依赖注入(inject)框架列表中。以下是您的问题的一些答案:

与框架耦合

Pico - Pico 倾向于阻止 setter 注入(inject),但除此之外,您的类不需要了解 Pico。只需要知道接线(所有 DI 框架都是如此)。

Guice - Guice 现在支持标准 JSR 330注释,因此您的代码中不再需要特定于 Guice 的注释。 Spring 也支持这些标准注解。 Guice 人使用的论点是,如果没有运行 Guice 注释处理器,如果您决定使用不同的框架,这些应该不会产生影响。

Spring - Spring 旨在让您避免在代码中提及 Spring 框架。因为他们确实有很多其他帮助程序/实用程序等。不过,依赖 Spring 代码的诱惑非常强烈。

性能

Pico - 我对Pico的速度特性不是太熟悉

Guice - Guice 的设计速度很快,引用文献中提到的比较有一些数字。当然,如果速度是首要考虑因素,则应考虑使用 Guice 或手动接线

Spring - Spring 可能很慢。已经有工作让它更快,使用 JavaConfig 库应该会加快速度。

易于使用

Pico - 易于配置。 Pico 可以为您做出一些自动接线决定。不清楚它如何扩展到非常大的项目。

Guice - 配置简单,您只需添加注释并从 AbstractModule 继承即可将事物绑定(bind)在一起。由于将配置保持在最低限度,因此可以很好地扩展到大型项目。

Spring - 相对容易配置,但大多数示例使用 Spring XML 作为配置方法。随着时间的推移,Spring XML 文件会变得非常庞大和复杂,并且需要时间来加载。考虑使用 Spring 和手动依赖注入(inject)的组合来克服这个问题。

社区规模

Pico - 小

Guice - 中等

Spring - 大

经验

Pico - 我没有太多使用 Pico 的经验,但它不是一个广泛使用的框架,因此更难找到资源。

Guice - Guice 是一个流行的框架,当您有一个大型项目需要重新开始大量开发时,它对速度的关注是受欢迎的。我担心配置的分布式特性,即不容易看到我们的整个应用程序是如何组合在一起的。这方面有点像AOP。

Spring - Spring 通常是我的默认选择。也就是说,XML 可能会变得很麻烦,并且由此导致的速度变慢很烦人。我经常最终使用手工制作的依赖注入(inject)和 Spring 的组合。当你真正需要基于 XML 的配置时,Spring XML 是相当不错的。 Spring 还付出了很多努力来使其他框架对依赖注入(inject)更加友好,这很有用,因为它们在这样做时经常使用最佳实践(JMS、ORM、OXM、MVC 等)。

引用文献

关于java - Google Guice 与 PicoContainer 的依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2026016/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com