1、前言说明
《SpringBoot定时任务说明》这篇文章有说明过SpringBoot的定时任务实现方式,不过介绍的是一种轻量级的定时任务实现。但对于高级的定时需求,就难以满足了:比如工程运行过程中控制定时任务的开关等。这个时候就需要引入Quartz了,本文主要介绍了SpringBoot与Quartz的整合。
2、整合步骤
所需依赖,下述依赖包只截取了整合所需依赖,SpringBoot配置所需依赖不包括其中:
1.7UTF-84.2.7.RELEASEorg.springframework spring-context-support ${spring.version}org.mybatis mybatis 3.1.1org.mybatis mybatis-spring 1.1.1org.springframework.boot spring-boot-starter-jdbcorg.quartz-scheduler quartz 2.2.3
项目整合的是最新版的Spring版本即4.2.7.RELEASE,同时Quartz也是最新版的2.2.3,如果融合工程后,出现错误,首先检查下版本是否有问题。
在Spring中使用Quartz有两种方式实现:第一种是任务类继承QuartzJobBean,第二种则是在配置文件里定义任务类和要执行的方法,类和方法可以是普通类。很显然,第二种方式远比第一种方式来的灵活。
这里采用的就是第二种方式。
run0/10 * * * * ?
TestTask类则是一个普通的Java类,没有继承任何类和实现任何接口(当然可以用注解方式来声明bean):
public class TestTask { /** 日志对象 */ private static final Logger LOG = LoggerFactory.getLogger(TestTask.class); public void run() { if (LOG.isInfoEnabled()) { LOG.info("测试任务线程开始执行"); //new ScheduleJobService().getScheduleJob(); } }}
至此,简单的整合大功告成,run方法将每隔5秒执行一次,因为配置了concurrent等于false,所以假如run方法