@Autowired 注入对象是NULL 怎么回事

fxhchl 2011-05-11 09:37:47
使用struts2,spring3 框架
实现类 @Service
@Transactional
public class CorpInfoMgrImpl {}
Action类中注入这个对象
@Autowired
private CorpInfoMgrImpl corpInfoMgr;
使用时抛异常 corpInfoMgr 是NULL
...全文
20676 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
婷婷的程序猿 2013-05-29
  • 打赏
  • 举报
回复
解决了吗,我也遇到这个问题了,楼主解决了的话,分享一下吧
coooliang 2011-05-14
  • 打赏
  • 举报
回复

@Component("corpInfoMgr")
public class CorpInfoMgrImpl implements CorpInfoMgr{}

@resource
private CorpInfoMgr corpInfoMgr
司马喂羊 2011-05-12
  • 打赏
  • 举报
回复
@Service("取名字"),名字都没有,它到哪里去给你注入
BearKin 2011-05-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 fxhchl 的回复:]
使用struts2,spring3 框架
实现类 @Service
@Transactional
public class CorpInfoMgrImpl {}
Action类中注入这个对象
@Autowired
private CorpInfoMgrImpl corpInfoMgr;
使用时抛异常 corpInfoMgr 是NULL
[/Quote]

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

还是只有CorpInfoMgrImpl 属性无法注入
光是自动@Autowired会出问题么 你也可以先别用自动装载
yingzhuo2011 2011-05-11
  • 打赏
  • 举报
回复
private CorpInfoMgrImpl corpInfoMgr;

->

private CorpInfoMar corpInfoMgr;

依赖不要依赖实现类,要用接口,我不敢说这么改一定能解决你的问题,但是这很有可能是个问题。
fxhchl 2011-05-11
  • 打赏
  • 举报
回复
应该是配置问题,在applicationContext中加<context:component-scan base-package="com.urcompany.project" />,让spring在容器启动时扫描package进行bean的生成和注入。

这个在XML中也配置了,还是不能自动注入..
fxhchl 2011-05-11
  • 打赏
  • 举报
回复
是不是你在Struts的Action类里加Transaction调用?
如果是我说的这个情况,那根源是Struts和Spring使用了不同的Classloader来加载对象,导致不能注入。
其中一个解决版本就是,你定义Action的xml里不要通过class不要直接设置为类名,而是用spring的id。


在action中没有调用transaction。使用的是struts2的Convention ,通过注解形式访问ACTION的,XML中没有配置 action相关信息
foolish100 2011-05-11
  • 打赏
  • 举报
回复
是不是你在Struts的Action类里加Transaction调用?
如果是我说的这个情况,那根源是Struts和Spring使用了不同的Classloader来加载对象,导致不能注入。
其中一个解决版本就是,你定义Action的xml里不要通过class不要直接设置为类名,而是用spring的id。
burningbloog 2011-05-11
  • 打赏
  • 举报
回复
应该是配置问题,在applicationContext中加<context:component-scan base-package="com.urcompany.project" />,让spring在容器启动时扫描package进行bean的生成和注入。
chiese_fish 2011-05-11
  • 打赏
  • 举报
回复
我也不知道,但是可以帮你顶一下。
fxhchl 2011-05-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fxhchl 的回复:]
应该是配置问题,在applicationContext中加<context:component-scan base-package="com.urcompany.project" />,让spring在容器启动时扫描package进行bean的生成和注入。

这个在XML中也配置了,还是不能自动注入..
[/Quote]

<context:component-scan base-package="*" />
<context:annotation-config/> 在xml配置中加上这两个不就可以了?还需要哪里配置
fxhchl 2011-05-11
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 fanpeng613 的回复:]
多个实现类?
[/Quote]

没有,试了一下,单单一个普通类就不能自动注入
fanpeng613 2011-05-11
  • 打赏
  • 举报
回复
多个实现类?
千骑卷平冈 2011-05-11
  • 打赏
  • 举报
回复
配置没问题的话就是corpInfoMgr没有对应的set方法
sky_sa 2011-05-11
  • 打赏
  • 举报
回复
同意楼上的,你检查下Spring XML 文件 引入命名空间没有,开启注解没有。
@Autowired 是按类型装配的,如果为NULL,那证明注解没有起到作用。

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧