3

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

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 {
    }
}

我的弹簧配置如下:

<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呢?

4

1 回答 1

1

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

于 2013-04-03T10:22:28.667 回答