这里说的是在spring容器中互不相关的两个bean的初始化顺序。例如:
<bean id="a" class="A"/>
<bean id="b" class="B"/>
问题是这样的:
class A{
private X x=B.service();
}
class B{
private static C c;
public static X service(){
// lalala
c.haha();
}
public void setC(C c){
B.c=c;
}
}
<bean id="a" class="A"/>
<bean id="b" class="B">
<property name="c" ref="xxxxx"/>
</bean>
A通过B的静态方法service(),在构造方法中去初始化成员变量x;B的静态方法service()需要调用类变量c,而c是spring通过成员方法setC(C c)来注入的。
这种情况下,如果spring配置中,a在b的前面,则a在初始化的时候,会在lalala处抛出空指针异常。因为这个时候,srping还没有完成b的装配,因此B.c是null,调用c.haha()会抛异常。
|
|