在给SSM项目添加一个定时器时,需要用到service对数据库进行操作
@Autowired
@Qualifier("InsuranceServiceImpl")
private InsuranceService insuranceService;
但是出现空指针错误,debug发现insuranceService竟然会为null…
百度找了一圈,说是在多线程时使用@Autowired总是获取不到bean,原因是:new thread不在spring容器中,也就无法获得spring中的bean对象。
问题搞清楚了,想要解决,最简单的方法是手动获取
//单独处理autowaire注入无效
ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
insuranceService = (InsuranceService) ac.getBean("InsuranceServiceImpl");