Java 使用依赖注入解决循环依赖时,如何解决maven问题?
我在两个不同的项目中有两个班,如下所示: 项目:Java 使用依赖注入解决循环依赖时,如何解决maven问题?,java,spring,maven,dependencies,circular-dependency,Java,Spring,Maven,Dependencies,Circular Dependency,我在两个不同的项目中有两个班,如下所示: 项目:projectA 有一个类:ProjectAClass 此项目的pom.xml有一个依赖项: <dependency> <groupId>org.projectA</groupId> <artifactId>projectB</artifactId> <version>1.0-SNAPSHOT</version> </dependenc
projectA
有一个类:
ProjectAClass
此项目的pom.xml有一个依赖项:
<dependency>
<groupId>org.projectA</groupId>
<artifactId>projectB</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
使ProjectAClass
类实现接口:
public class ProjectAClass implements ProjectAClassInterface{
public String funcToUse() throws Exception {
...
}
}
最后,尝试在ProjectBClass
中使用此接口:
public class ProjectBClass {
private ProjectAClassInterface projectAClassInterface;
public ProjectAClassInterface getProjectAClassInterface() {
return projectAClassInterface;
}
public void setProjectAClassInterface(ProjectAClassInterface projectAClassInterface) {
this.projectAClassInterface = projectAClassInterface;
}
}
ProjectAClassInterface
在IntelliJ中显示为红色,当我单击Alt+Enter并选择选项“添加模块依赖项”projectC时,我收到以下消息:
添加对模块“projectC”的依赖将在模块“projectA”和“projectB”之间引入循环依赖。是否仍要添加依赖项?
尽管遵循接口方法,我仍然无法消除循环依赖。我哪里出错了?您需要创建第三个maven模块并将接口移动到该模块。然后让您的模块projectA和projectB依赖于新创建的模块。这将避免循环依赖。当然它会显示为红色。它要么依赖于它,从而访问代码,要么不依赖。projectA依赖projectB有什么具体原因吗?是的,projectA使用projectB中的其他一些API,或者只是将接口移动到projectB
public class ProjectBClass {
private ProjectAClassInterface projectAClassInterface;
public ProjectAClassInterface getProjectAClassInterface() {
return projectAClassInterface;
}
public void setProjectAClassInterface(ProjectAClassInterface projectAClassInterface) {
this.projectAClassInterface = projectAClassInterface;
}
}