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定時器