spring boot 整合quartz ,job不能注入的問題


在使用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;
    }

 

這樣既可注入進來.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM