Spring自动装配失败但应用程序启动

时间:2013-04-14 18:54:47

标签: java spring nullpointerexception autowired

最近,我遇到了一个基于Spring的应用程序在访问Class(A)中的自动装配字段时抛出“NullPointerApplication”的情况。自动装配的bean也用于其他类(B和C)。那些类(B和C)在访问该bean时工作正常。

applicaton-context.xml:

<bean id="myBean" class="x.y.x.MyBean">
</bean>

<context:component-scan base-package="x.y.z" />


Class MyBean{
public void m(){
}
}

@Component    
Class A{

@Autowired
MyBean theBean;

public void methodA(){
  theBean.m();                       //Getting NPE
}

}

@Component
Class B{

@Autowired
MyBean theBean;

public void methodB(){
  theBean.m();                             // No NPEs, works fine
}

}

@Component
Class C{

@Autowired
MyBean theBean;

public void methodC(){
  theBean.m();                             // No NPEs, works fine
}

}

当我重新启动应用程序时,一切正常。之前,如果bean自动装配失败,则A类bean创建失败,应用程序不应启动。相反,应用程序工作正常(A类除外),并且找不到无法自动装配的异常。所以我想知道这是一个罕见的随机案例,其中Spring自动装配搞砸了???我是对的吗?这是Spring的一个已知问题吗?

1 个答案:

答案 0 :(得分:0)

您确定您的A类本身是在Spring环境中吗?也许您的B类和C类是自动扫描的,但不是A类(不在组件扫描的基础包中)。

在这种情况下,A中会忽略自动装配,因此您的theBean实例为空。