maven使用依赖注入解决循环依赖时出现的问题如何解决?
How to resolve maven problems when using dependency injection to solve circular dependency?
我在两个不同的项目中有两个 classes:
项目:projectA
有一个class:ProjectAClass
pom.xml 这个项目有一个依赖:
<dependency>
<groupId>org.projectA</groupId>
<artifactId>projectB</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
项目:projectB
有一个class:ProjectBClass
现在我想使用 ProjectAClass
class 中的函数,但是因为我无法在 projectB
的 [=48] 中添加 projectA
项目的依赖项=](因为它会导致循环依赖),我正在尝试通过以下方式使用依赖注入:
我创建了一个这样的界面(在 projectA
项目中):
public interface ProjectAClassInterface {
String funcToUse() throws Exception;
}
使 ProjectAClass
class 实现接口:
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 和 select 选项“添加对模块 'projectC' 的依赖项时,我收到以下消息:
Adding dependency on module 'projectC' will introduce circular dependency between modules 'projectA' and 'projectB'. Add dependency anyway?
尽管遵循了接口方法,但我仍然无法摆脱循环依赖。我哪里错了?
您需要创建第三个 Maven 模块并将接口移动到它。然后让您的模块 projectA 和 projectB 依赖于新创建的模块。这将避免循环依赖。
我在两个不同的项目中有两个 classes:
项目:projectA
有一个class:ProjectAClass
pom.xml 这个项目有一个依赖:
<dependency>
<groupId>org.projectA</groupId>
<artifactId>projectB</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
项目:projectB
有一个class:ProjectBClass
现在我想使用 ProjectAClass
class 中的函数,但是因为我无法在 projectB
的 [=48] 中添加 projectA
项目的依赖项=](因为它会导致循环依赖),我正在尝试通过以下方式使用依赖注入:
我创建了一个这样的界面(在 projectA
项目中):
public interface ProjectAClassInterface {
String funcToUse() throws Exception;
}
使 ProjectAClass
class 实现接口:
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 和 select 选项“添加对模块 'projectC' 的依赖项时,我收到以下消息:
Adding dependency on module 'projectC' will introduce circular dependency between modules 'projectA' and 'projectB'. Add dependency anyway?
尽管遵循了接口方法,但我仍然无法摆脱循环依赖。我哪里错了?
您需要创建第三个 Maven 模块并将接口移动到它。然后让您的模块 projectA 和 projectB 依赖于新创建的模块。这将避免循环依赖。