【问题标题】:Support multiple DI containers in own Java framework在自己的 Java 框架中支持多个 DI 容器
【发布时间】:2015-06-07 03:56:09
【问题描述】:

在我自己的多用途Java框架中,如何在不依赖具体的DI容器的情况下使用依赖注入?也就是说,任何应用程序都应该能够使用我的框架,无论它使用 CDI、Spring 还是 Guice 本身。

以下所有都应该是可能的:

  • 让我的框架将依赖项注入应用程序
  • 让应用程序将依赖项注入到我的框架中
  • 让我的框架的一个组件将依赖项注入另一个组件

【问题讨论】:

    标签: java spring dependency-injection frameworks cdi


    【解决方案1】:

    JSR 330: Dependency Injection for Java 是依赖注入社区内共识程度最高的规范,因此得到以下机构的支持:

    这使得 JSR 330 成为跨依赖注入框架具有可移植性的最佳公分母。这显然是以牺牲功能范围为代价的。

    【讨论】:

    • 感谢 Antonin 指出所有三个框架都支持 JSR 330 注释。我希望,我可以评价你的回答,但我将不得不等待更高的“声誉”。
    【解决方案2】:

    您必须为您需要的所有 DI 操作和您可能想要使用的每个具体实例的实现提供一个最低公分母接口。

    您的对象中不能有任何 DI 引擎特定的注释,因此您必须将所有配置外部化并为所有对象使用 setter 或构造函数注入。

    就个人而言,我认为这是浪费时间。 DI应该是一种商品。我认为没有充分的理由切换 DI 引擎。您更有可能会选择一款满足您需求的产品并坚持下去。

    【讨论】:

    • 谢谢,达菲莫。这个想法不是切换 DI 引擎,而是允许使用任何 DI 引擎的应用程序使用框架提供的功能。
    • 我的建议? “就用吧。”您的框架不需要框架。最好遵循框架所要求的习语。不要包裹或隐藏它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    相关资源
    最近更新 更多