java - 使用依赖注入(inject)解决循环依赖时如何解决maven问题?

标签 java spring maven dependencies circular-dependency

我在两个不同的项目中有两个类(class),如下所示:

项目:projectA
有一个类:ProjectAClass
该项目的pom.xml有一个依赖:

<dependency>
    <groupId>org.projectA</groupId>
    <artifactId>projectB</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

项目:projectB
有一个类:ProjectBClass

现在我想使用 ProjectAClass 类中存在的函数,但由于我无法在 projectB 中添加 projectA 项目的依赖项pom.xml(因为它会导致循环依赖),我尝试通过以下方式使用依赖注入(inject):

我创建了一个像这样的界面(在 projectA 项目中):

public interface ProjectAClassInterface {
    String funcToUse() throws Exception;
}

使 ProjectAClass 类实现该接口(interface):

public class ProjectAClass implements ProjectAClassInterface{
    public String funcToUse() throws Exception {
        ...
    }
}

最后尝试在 ProjectBClass 中使用此接口(interface):

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”之间引入循环依赖。还是要添加依赖项吗?

尽管遵循接口(interface)方法,我仍然无法消除循环依赖。我哪里出错了?

最佳答案

您需要创建第三个 Maven 模块并将接口(interface)移至其中。然后让你的模块projectA和projectB依赖于新创建的模块。这将避免循环依赖。

关于java - 使用依赖注入(inject)解决循环依赖时如何解决maven问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57755906/

相关文章:

java - 在 TableView 中显示最多两位小数的 DoubleProperty

java - 在 spring 中创建带有名称的 bean 时出错

java - 我如何知道用户是否在 Java 的 Swing 中插入了有效的日期?

java - 私有(private)方法的返回值

java - Spring 3项目中的Hibernate基础配置-找不到类异常

java - 初学者 Spring Batch 查询以了解 itemstream 和一些概念

java - Maven Antrun : how to iterate over files?

java - Eclipse|Maven : Can't download source code of jar package?

java - 使用 "java -jar executable.jar"执行 Jar 是可以的,但即使具有执行权限, "./executable.jar"也会返回 "Bad Magic Number"

java - 如何在java中重复运行多个任务并在一定时间后停止它