如果两个类都在不同的maven项目中,如何在另一个类中注入类的依赖项。 我不想使用import语句,因为添加import语句意味着我必须在pom.xml中添加依赖项,这会导致循环依赖性问题。
所以我需要使用@inject注入依赖项运行时。
答案 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>