如何把Spring的Bean注入到Quartz中

本文介绍了在使用Quartz进行定时调度时,如何解决因Quartz容器无法访问Spring容器中的bean而引发的空指针问题,通过创建CustomJobFactory并集成AutowireCapableBeanFactory来实现bean的自动注入。
摘要由CSDN通过智能技术生成

前言

今天写Quartz定时调度的时候遇到了想调用增删改查操作数据库的情况
这时候在Quartz容器中 直接注入bean 但是会出现bean为空的情况,

一、为什么为空

这种情况是因为Quartz容器 中 它读取不到Spring 容器中的bean,所以我们需要加一些方法让他读到

二、解决方案

1.创建一个QuartzConfig类
@Configuration
public class QuartzConfig {
    @Autowired
    private CustomJobFactory customJobFactory;
    @SneakyThrows
    @Bean
    public Scheduler scheduler() {
        SchedulerFactory schedulerFactory = new StdSchedulerFactory();
        Scheduler scheduler = schedulerFactory.getScheduler();
        // 自定义 JobFactory 使得在 Quartz Job 中可以使用 @Autowired
        scheduler.setJobFactory(customJobFactory);
        scheduler.start();
        return scheduler;
    }
}
2.建一个CustomJobFactory类
@Configuration
public class CustomJobFactory extends AdaptableJobFactory {
    @Autowired
    private AutowireCapableBeanFactory autowireCapableBeanFactory;
    @Override
    protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
        Object jobInstance = super.createJobInstance(bundle);
        autowireCapableBeanFactory.autowireBean(jobInstance);
        return jobInstance;
    }
}

这时候注入的bean就能用,并且不为空了

总结

踩坑时刻,如对各位有帮助,不胜荣幸,祝各位早日暴富!

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林知屿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值