gpt4 book ai didi

java - 如何在 Spring 中为(非静态)内部类定义一个 bean?避免循环依赖

转载 作者:行者123 更新时间:2023-11-30 11:34:11 26 4
gpt4 key购买 nike

我有一个像这样的内部类的类:

package myPackage;

public class A {
private B b;

public void setB(B b) { this.b = b; }
public B getB() { return this.b; }

public class B {
}
}

我的 spring 配置如下:

<bean id="a" class="myPackage.A" autowire="byName" scope="prototype">
<property name="b">
<bean class="myPackage.A$B" name="b" autowire="byName" scope="prototype">
<constructor-arg ref="a"/>
</bean>
</property>
</bean>

但是我遇到了这个错误:

org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'a': Requested bean is currently in creation: Is there an unresolvable circular reference?

当然很明显我有一个循环引用,但是我的内部类怎么会有一个spring bean呢?

最佳答案

如果您需要将 a 限定为原型(prototype),我不确定这是否可以在 Spring 级别解决。问题是您正在尝试创建 a 的实例,它需要引用 a b,而 b 又引用一个不同的 a 的实例(因为每次注入(inject) bean 时原型(prototype)都会为您提供一个新实例),等等。如果您真正想要的是 a 成为包含 b 的原型(prototype) bean,它引用 相同a 封闭实例 那么您将不得不使用 Java 配置或工厂 bean。

关于java - 如何在 Spring 中为(非静态)内部类定义一个 bean?避免循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15783854/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com