我需要在服务模块中将表单Spring注释切换为CDI注释。一切正常,但实体管理器为空。如果我用@Autowire注释存储库一切都很好(注入实体管理器)。当我切换到@Inject时,实体管理器为空,我不明白为什么?
这是spring context config:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- Scan service classes for beans -->
<context:component-scan
base-package="com.monitoring.facade, com.monitoring.indication, com.monitoring.app"
annotation-config="false">
</context:component-scan>
</beans>
服务类:
@Named
public class IndicatorTreeService implements Serializable{
//@Autowire - everything ok
@Inject
private IndicatorRepository indicatorRepository;
@Inject
private IndicatorTreeBuilder indicatorTreeBuilder;
public List<AbstractIndicatorTreeItem> getIndicatorTreeItems(){
List<IndicatorVO> indicators = indicatorRepository.getIndicatorQuery().getResultList();
return indicatorTreeBuilder.buildTree(indicators);
}
}
存储库:
@Named
public class IndicatorRepository{
@PersistenceContext
private EntityManager em;
public IndicatorQuery getIndicatorQuery(){
return new IndicatorQuery(em);
}
}