在使用spring boot 整合quartz的時候,新建定時任務類,實現job接口,在使用@AutoWire或者@Resource時,運行時出現nullpointException的問題.顯然是相關類沒有注入進來,通過查詢相關資料發現是quartz的問題,是job類是沒有交給spring來管理.
解決辦法:
創建一個jobFactory類
@Configuration public class MyJobFactory extends SpringBeanJobFactory { @Autowired private AutowireCapableBeanFactory capableBeanFactory; @Override protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception{ //調用父類的方法 Object jobInstance = super.createJobInstance(bundle); //進行注入 capableBeanFactory.autowireBean(jobInstance); return jobInstance; } }
@Autowired private MyJobFactory myJobFactory; @Bean(name = "schedulerFactoryBean") public SchedulerFactoryBean schedulerFactory() { SchedulerFactoryBean bean = new SchedulerFactoryBean(); // 延時啟動,應用啟動1秒后 bean.setStartupDelay(1); bean.setJobFactory(myJobFactory); return bean; }
這樣既可注入進來.
