在自己的Java框架中支持多个DI容器

时间:2015-04-02 08:53:43

标签: java spring dependency-injection frameworks cdi

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

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

  • 我的框架将依赖项注入应用程序
  • 用于将依赖项注入我的框架的应用程序
  • 表示我的框架的一个组件将依赖项注入另一个组件

2 个答案:

答案 0 :(得分:2)

JSR 330: Dependency Injection for Java是依赖注入社区中具有最高共识水平的规范,因此得到以下支持:

这使得JSR 330成为在依赖注入框架中具有可移植性的最佳共同点。这显然是以功能范围为代价的。

答案 1 :(得分:1)

您必须为您需要的所有DI操作以及您可能想要使用的每个具体实例的实现提供最小公分母界面。

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

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