SpringBoot2.X整合Quartz

由于有个新需求,要求可以动态增加,删除,修改定时任务,SpringBoot自带的定时任务已经不能满足了,所以需要整合功能更强大的Quartz。
我在网上搜索了许多方案,不过他们都还是使用的SpringBoot1.X,而且并没有说明他们SpringBoot的版本,或者说他们也是照着网上Spring+SpringMVC的方法来做的,着实把我坑了一把。
但其实,SpringBoot2.0后对Quartz有了更好的支持,我们非常简单就能完成对Quartz的整合,这里记录一下,大家不要再踩我踩过的坑了。

首先说一下错误的整合方法:

<!--quartz相关依赖-->
<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>2.2.3</version>
</dependency>
<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz-jobs</artifactId>
    <version>2.2.3</version>
</dependency>

如果你使用SpringBoot2.x的话,看到这种依赖,直接右上角点X

正确方法

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-quartz</artifactId>
</dependency>

没错,就这样完成了,之后就可以愉快的使用Quartz了。惊不惊喜?

最后说一下“错误”的方法哪儿错了。
其实并是不真的错了,用以前的老方法一样可以完成整合,只不过还需要很多配置。
比如,你会发现定时任务里bean注入失败,于是你需要自己去重写AdaptableJobFactory的createJobInstance方法,设置JobFactory。
但是,明明别人已经帮你弄好了,而且弄的比你自己弄的还好,为什么不用呢?

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据