spring boot 整合quartz ,job不能注入的问题

Posted on 2018-09-06 14:27  守护锁链  阅读(1099)  评论(0编辑  收藏  举报

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

 

这样既可注入进来.

 

Copyright © 2024 守护锁链
Powered by .NET 9.0 on Kubernetes