懒惰地初始化一个由另一个lazy-init bean引用的bean

时间:2012-11-05 14:43:49

标签: java spring lazy-initialization

我有一个懒惰初始化的bean,并且要设置一些参数和属性。

  <bean id="abc" class="a.b.c.abc" lazy-init="true">
        <constructor-arg ref="qwert" />
        <property name="aImplementations">
            <list>
                <ref bean="newBean" />
            </list>
        </property>
    </bean>

newBean定义为<bean id="newBean" class="a.b.c.newBean" lazy-init="true" init-method="init" />

但是懒惰的bean被初始化并且调用了init()方法。

如果我删除bean 'abc'并且只保留newBean,则不会调用newBean类的init()方法。

可能是什么原因?我在谷歌搜索但没有帮助。

1 个答案:

答案 0 :(得分:0)

如果bean没有从任何其他bean引用,或者它从另一个惰性初始化bean引用,那么它只会被惰性初始化。你的bean'abc'是非惰性的,在构造这个bean时,它必须将newBean插入abc。