使用@inject注释

时间:2016-03-07 08:00:53

标签: java dependency-injection

如果两个类都在不同的maven项目中,如何在另一个类中注入类的依赖项。 我不想使用import语句,因为添加import语句意味着我必须在pom.xml中添加依赖项,这会导致循环依赖性问题。

所以我需要使用@inject注入依赖项运行时。

1 个答案:

答案 0 :(得分:0)

import仅表示您的配置文件,无论是xml配置还是@Configuration带注释的java类,都在类路径上。它与maven无关。 Maven管理模块依赖关系,而spring管理类依赖关系。

假设您有2个maven模块:

module A: my.project.artifact1
module B: my.project.artifact2

模块A有一个bean bean1需要注入模块B中的bean。

模块A具有依赖关系:

<dependency>
   <groupId>my.project</groupId>
   <artifactId>artifact2</artifactId>
</dependency>

项目b有一些bean:

@Component
public class Bean2 {
   @Inject
   private Bean1 bean1;
}

如果您在模块A中使用组件扫描并且bean1在您的类路径中 - 没问题。它将被注入bean2。如果没有,您应该在XML中定义它:

<bean id="bean2" class="Bean2">
   <propery name="bean1" ref="bean1"></property>
</bean>

就是这样。 B无需依赖A

应该具有的功能(在大多数情况下)是Bean1实现的接口,并且位于模块A和B都依赖的第三个通用模块中。< / p>