黑马程序员技术交流社区

标题: spring的加载顺序 [打印本页]

作者: peiyanda    时间: 2015-12-14 22:54
标题: spring的加载顺序
这里说的是在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()会抛异常。







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2