当通过上下文Loader Listener加载配置xml时,我在访问实例变量时遇到了问题。
以下是用于创建bean的配置xml
<bean id="A" class"org.sample.A">
</bean>
<bean id="B" class"org.sample.B">
<property name="cobj" ref="C"/>
</bean>
<bean id="C" class"org.sample.C"/>
以下是java代码
Class A{
C cobj = null;
public A(){
cobj = B.getInstance().getCobj();
}
void display(){
System.out.println(cobj);
}
}
Class B{
private static bobj = null;
C cobj = null;
public static B getInstance(){
if (bobj == null) {
return new B();
}
return bobj;
}
public setCobj(C obj){
this.cobj = obj
}
public C getCobj(){
return cobj;
}
}
Class C{
}
当通过上下文Loader Listener加载配置xml时,sysout打印为null。 但是当通过Dispatcher servlet加载相同的配置时,该值可用。
此外,如果显示方法如下修改,则显示结果
public void display(){
B stackObj = new B();
System.out.println(stackObj.cobj);
}
通过上下文Loader配置后,Bean B将被初始化。 但是,如果通过调度程序servlet进行配置,则它在类A的早期初始化。
这个创作顺序能否确定?
答案 0 :(得分:0)
你不要自己创造物品。这就是Spring应该做的事情;为你提供对象。通过拨打xmlBeanFactory
加载所有对象,然后实际使用 spring 。