Spring Injection获取空指针异常

时间:2013-02-22 06:26:47

标签: java spring

尝试注入对象时出现空指针异常。这是我的代码:

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext.xml
</param-value>
 </context-param>'

的applicationContext.xml

<bean id="accessDao" 
 Class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" 
  autowire-candidate="true">
  <property name="transactionManager" ref="txManager" />   
  <property name="target" ref="accessDaoTarget" />   
   <property name="transactionAttributes">   
   <props>   
  <prop key="*">PROPAGATION_REQUIRED</prop>   
   </props>   
  </property>   

</bean>   '

CommonBean

import com.domain.dao.IDao;
@Named
public class CommonBean implements Serializable{

/**
 * 
 */

private static final long serialVersionUID = 1L;
@Inject
private IDao accessDao;


public IDao getAccessDao()

      {
        return accessDao;
      }

 public void setAccessDao(IDao accessDao)
  {
    this.accessDao = accessDao;
  }

}

2 个答案:

答案 0 :(得分:0)

我想的原因是因为组件扫描应该包含Spring注释的所有文件。 因此,要使其工作,请扩大要扫描的包的范围。

改变
<context:component-scan base-package="com.myjsf.appl.CommonBean" />

 <context:component-scan base-package="com.domain,com.myjsf" />

答案 1 :(得分:-1)

我认为原因是因为您正在引用一个实现IDAO接口的“accessDao”bean。 在applicationContext.xml上声明的bean accessDao的类型为org.springframework.transaction.interceptor.TransactionProxyFactoryBean,它实现了BeanFactoryAware接口,而不是IDAO接口。

因为春天不会识别你想要注射的豆子(IDAO accessDAO) 并且您的财产不会被初始化。