当前位置: 代码迷 >> J2EE >> @Autowired 注入对象是NULL 咋回事
  详细解决方案

@Autowired 注入对象是NULL 咋回事

热度:605   发布时间:2016-04-21 23:18:34.0
@Autowired 注入对象是NULL 怎么回事
使用struts2,spring3 框架
实现类  @Service
@Transactional
public class CorpInfoMgrImpl {}
Action类中注入这个对象 
@Autowired
private CorpInfoMgrImpl corpInfoMgr;
使用时抛异常 corpInfoMgr 是NULL

------解决方案--------------------
应该是配置问题,在applicationContext中加<context:component-scan base-package="com.urcompany.project" />,让spring在容器启动时扫描package进行bean的生成和注入。
------解决方案--------------------
是不是你在Struts的Action类里加Transaction调用?
如果是我说的这个情况,那根源是Struts和Spring使用了不同的Classloader来加载对象,导致不能注入。
其中一个解决版本就是,你定义Action的xml里不要通过class不要直接设置为类名,而是用spring的id。
------解决方案--------------------
private CorpInfoMgrImpl corpInfoMgr;

-> 

private CorpInfoMar corpInfoMgr;

依赖不要依赖实现类,要用接口,我不敢说这么改一定能解决你的问题,但是这很有可能是个问题。
------解决方案--------------------
引用:
使用struts2,spring3 框架
实现类 @Service
@Transactional
public class CorpInfoMgrImpl {}
Action类中注入这个对象 
@Autowired
private CorpInfoMgrImpl corpInfoMgr;
使用时抛异常 corpInfoMgr 是NULL


你先确认问题的原因 比如现在的问题是<context:component-scan base-package="com.urcompany.project" />没有起作用,还是你没开启
<context:annotation-config/>  

还是只有CorpInfoMgrImpl 属性无法注入
光是自动@Autowired会出问题么 你也可以先别用自动装载 
  相关解决方案