问题描述
接一个项目, 本来项目没有使用spring 管理, 也没有使用到数据库,今天加一个需求,需要用到数据库,我就用了spring。
当然我使用到了,@Autowired
后来,调用Service接口的时候, 一直报这个接口空指针异常。

说明
类B里用了@Autowired注解,类A和类B都加了@Component或者其他形式如@Service这样都注解。
如果类A 想访问类B,采用new B()的方式,则在类B里没法访问bean对象(也就是加了@Autowired的对象),会报空指针;
如果在类A中注入类B,则在类B里可以访问注入的bean对象
原因
@Autowired注入即将对象注入到Spring的IOC容器内,而new出来的实例脱离了Spring的管理,两个对象不在一个管理者管理下,也即无法联系起来
解决
最后我把new的方式,都改为了@Autowired注入对象
本文探讨了在不使用Spring管理的项目中引入Spring框架并利用@Autowired进行依赖注入时遇到的问题。具体分析了通过new关键字创建对象与使用@Autowired注入对象两种方式的区别,并解释了这两种方式下@Autowired注解的行为差异。最后提出了将所有new操作改为@Autowired注入作为解决方案。
9736

被折叠的 条评论
为什么被折叠?



