尝试注入对象时出现空指针异常。这是我的代码:
<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;
}
}
答案 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) 并且您的财产不会被初始化。