Spring默认有个规则,总是先初始化主调Bean,然后再初始化依赖Bean。大多数情况下,Bean之间的依赖非常直接,Spring返回Bean实列之前,完成Bean依赖关系的注入。假如Bean A依赖Bean B,程序请求Bean A时,Spring容器会先初始化Bean B,再将B注入A,最后将Bean A返回给程序。
在某些情况下,若Bean B还未被初始化,就将A返回给程序,此时将发生异常。为了指定Bean在目标Bean之前初始化,可以使用depends-on属性强制初始化。
<!--在初始化aBean之前,强制初始化bBean-->
<bean id="aBean" class="Abean" depends-on="B">
<property name="B" ref="bBean"/>
</bean>
<bean id="bBean" class="Bbean"/>