今天,日月教大家如何使用springBoot集成Quartz(定时器),沿用的springboot少xml配置的优良传统,本身支持表达式等多种定时任务 。
为什么要使用Quartz
多任务情况下,quartz更容易管理,可以实现动态配置
集成Quartz
1、maven依赖
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
2、测试Job类
import java.text.SimpleDateFormat;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
/**
*
* @ClassName: SchedulerQuartzJobUpOffLine
* @Description: 实现Job接口 监听服务上下线的定时器
* @author chenqi
* @date 2018年9月4日
*
*/
public class SchedulerQuartzJobTest implements Job{
private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private void before(){
System.out.println("任务开始执行-" + dateFormat.format(new Date()));
}
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
before();
System.out.println("业务逻辑。。。");
after();
}
private void after(){
System.out.println("任务执行结束");
}
}
3、定时器管理类
package com.chenqi.springBootQuartz.quartz;
import java.util.Date;
import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.JobKey;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.TriggerBuilder;
import org.quartz.TriggerKey;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import com.chenqi.springBootQuartz.quartz.job.SchedulerQuartzJobTest;
/**
*
* @ClassName: QuartzScheduler
* @Description: 任务调度处理
* @author chenqi
* @date 2018年9月4日
*
*/
@Configuration
public class QuartzSchedulerManager {
// 任务调度
@Autowired
private Scheduler scheduler;
/**
* 开始执行定时器
*
* @throws SchedulerException
*/
public void startJob() throws SchedulerException {
startJobTest(scheduler);
scheduler.start();
}
/**
* 获取Job信息
*
* @param name
* @param group