1.springboot创建时勾选! Quartz Scheduler
2.导入pom依赖(需要JDBCJobStor存储方式时需要导入)
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.1</version>
</dependency>
3.创建一个执行定时方法的类
package com.company.quartz01.quartz;
import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class RamJob implements Job {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
System.out.println("执行了定时任务..........");
// 接收传递过来的参数并打印
JobDataMap jobDataMap = jobExecutionContext.getJobDetail().getJobDataMap();
System.out.println(jobDataMap.get("level") +""+ jobDataMap.get("job"));
}
}
4.创建一个启动调度器的方法
package com.company.quartz01;
import com.company.quartz01.quartz.RamJob;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import static org.quartz.JobBuilder.newJob;
/**
* @author 小伙子
* @create 2019-02-24-18:41
*/
public class quartzTest {
public static void main(String[] args) throws SchedulerException {
// 创建调度器
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
// 将具体的作业类(RamJob)绑定到调度任务详情中
/*
withDescription中的参数:描述
withIdentity中的参数:
name : 这个任务的唯一标识
group :分组
*/
JobDetail jobDetail = newJob(RamJob.class)
.withDescription("this is a job")
.withIdentity("job2","group2")
// 向具体工作类(RamJob)传递参数
.usingJobData("level","老")
.build();
// 向工作类传递参数的另外一种方法
JobDataMap jobDataMap = jobDetail.getJobDataMap();
jobDataMap.put("job","司机");
// 创建触发器
Trigger trigger = TriggerBuilder.newTrigger()
.withDescription("this is a trigger1")
// 循环执行三次每次间隔10s
.withSchedule(SimpleScheduleBuilder.repeatSecondlyForTotalCount(3,10))
// 每天的19点10分5秒的时候执行
// .withSchedule(CronScheduleBuilder.cronSchedule("05 10 19 * * ?"))
.withIdentity("trigger1","group1")
.build();
// 方法:
// withDescription : 添加一个描述
// withIdentity : 设置一个id
// withSchedule : 设置调度器
// 将触发器以及调度任务详情绑定到调度器上
scheduler.scheduleJob(jobDetail,trigger);
// 启动调度器
scheduler.start();
}
}
这样就完成了一个简单的Quartz定时器