0

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

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

应用程序上下文.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>   '

普通豆

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;
  }

}
4

2 回答 2

0

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

从改变

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

 <context:component-scan base-package="com.domain,com.myjsf" />
于 2013-02-22T06:54:09.273 回答
-1

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

因此,spring 将无法识别您尝试注入的 bean(IDAO accessDAO),并且您的属性将不会被初始化。

于 2013-02-22T18:29:17.423 回答