【发布时间】:2012-11-05 14:43:49
【问题描述】:
我有一个延迟初始化的 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() 方法。
可能是什么原因?我在 Google 上搜索过,但没有任何帮助。
【问题讨论】:
-
从您的 XML 示例看来,
abc是 not 延迟初始化的,这将导致观察到的问题。你的例子有错误吗? -
那么,
abc是否被任何其他非惰性 bean 引用? -
不,看起来不像。我只是在工作区中寻找并没有找到任何东西。
-
你可以在
abc的构造函数中放置断点。这并不容易,但是通过一些练习,您会发现 Spring 加载特定 bean 的原因。
标签: java spring lazy-initialization