java - Spring中的循环依赖

标签 java spring

Spring 如何解决这个问题:bean A 依赖于 bean B,bean B 依赖于 bean A。

最佳答案

Spring reference manual解释了如何解决循环依赖。 Bean 首先被实例化,然后相互注入(inject)。

考虑这个类:

package mypackage;

public class A {

    public A() {
        System.out.println("Creating instance of A");
    }

    private B b;

    public void setB(B b) {
        System.out.println("Setting property b of A instance");
        this.b = b;
    }

}

还有一个类似的类B:

package mypackage;

public class B {

    public B() {
        System.out.println("Creating instance of B");
    }

    private A a;

    public void setA(A a) {
        System.out.println("Setting property a of B instance");
        this.a = a;
    }

}

如果您有此配置文件:

<bean id="a" class="mypackage.A">
    <property name="b" ref="b" />
</bean>

<bean id="b" class="mypackage.B">
    <property name="a" ref="a" />
</bean>

使用此配置创建上下文时,您将看到以下输出:

Creating instance of A
Creating instance of B
Setting property a of B instance
Setting property b of A instance

请注意,当a注入(inject)b时,a尚未完全初始化。

关于java - Spring中的循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60121545/

相关文章:

java - Spring @Autowired 不工作 - BeanCreationException

java - spring是如何实现这个技术的?

java - 使用 Hibernate 和 Spring 的一对多映射

spring - hibernate - 如果父级设置了级联,则无法删除子级

java - 如何将 Apache Camel 集成到 Java Spring 3.0 Web 应用程序中以导入数据

java - 我在 lambda 表达式中找不到结果

java - 将唯一 ID 附加到 HTML 表格行的推荐方法是什么?

java - 如何从 src/main/java 中的 src/test/resources 读取 props

java - 如果我使用 Java 中的 JPA 搜索 child 的 parent 之一,如何获得 child 的姓名作为结果?

java - 在一项 Activity 中显示 TextView 的圆圈和内容