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 依赖于新创建的模块。这将避免循环依赖。