问题描述
接一个项目, 本来项目没有使用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注入对象