我是靠谱客的博主 坚强大碗,最近开发中收集的这篇文章主要介绍springBoot整合Quartz注入的业务service为空,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

springBoot整合Quartz过程在下一篇博客。

问题描述:

springBoot整合Quartz后,job中注入的业务service为null。

原因:

Spring容器可以管理Bean,但是Quartz的job是自己管理的,如果在Job中注入Spring管理的Bean,需要先把Quartz的Job也让Spring管理起来,因此,我们需要重写JobFactory。

解决方法:

创建任务工厂:

@Component
public class MyJobFactory extends AdaptableJobFactory {
private final AutowireCapableBeanFactory capableBeanFactory;
public MyJobFactory(AutowireCapableBeanFactory capableBeanFactory) {
this.capableBeanFactory = capableBeanFactory;
}
@Override
protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
// 调用父类的方法
Object jobInstance = super.createJobInstance(bundle);
// 进行注入
capableBeanFactory.autowireBean(jobInstance);
return jobInstance;
}
}

将一个方法产生为Bean并交给Spring容器管理。
Spring为了能集成Quartz,特意提供了管理Quartz的schedulerFactoryBean,必须配置

@Configuration
public class StartSchedulerListener implements ApplicationListener<ContextRefreshedEvent> {
@Autowired
public MySchedulerFactory mySchedulerFactory;
private final MyJobFactory myJobFactory;
public StartSchedulerListener(MyJobFactory myJobFactory) {
this.myJobFactory = myJobFactory;
}
// springboot 启动监听
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
try {
mySchedulerFactory.scheduleJobs();
} catch (SchedulerException e) {
e.printStackTrace();
}
}
//注入SchedulerFactoryBean
@Bean
public SchedulerFactoryBean schedulerFactoryBean() {
// Spring提供SchedulerFactoryBean为Scheduler提供配置信息,并被Spring容器管理其生命周期
SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
schedulerFactoryBean.setStartupDelay(5);//延时5秒启动
// 设置自定义Job Factory,用于Spring管理Job bean
schedulerFactoryBean.setJobFactory(myJobFactory);
return schedulerFactoryBean;
}
@Bean(name = "scheduler")
public Scheduler scheduler() {
return schedulerFactoryBean().getScheduler();
}
}

配置如上两个类,重新启动springboot工程,这时候就没问题了。

最后

以上就是坚强大碗为你收集整理的springBoot整合Quartz注入的业务service为空的全部内容,希望文章能够帮你解决springBoot整合Quartz注入的业务service为空所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部