调度计划由作业(JobDetail)和触发器(Trigger)构成。 Scheduler的scheduleJob方法可以向调度程序中添加新的作业和触发器。
工作流程
- 创建调度程序Scheduler
SchedulerFactoryBean factory = new SchedulerFactoryBean();
// 创建Scheduler实例
Scheduler scheduler = factory.getScheduler();
- 启动调度程序
scheduler.start();
- 创建调度程序执行类 继承 Job接口
public class ExecuteJob implements Job {
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
logger.info("定时任务开始执行,作业名=" + jobExecutionContext.getMergedJobDataMap().get("key"););
}
}
- 创建作业和触发器
// 创建作业
JobDetail jobDetail = JobBuilder.newJob(ExecuteJob.class)
.withIdentity(作业名, 作业组).build();
jobDetail.getJobDataMap().put("key", 作业名);
// 创建计划
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cron表达式).withMisfireHandlingInstructionDoNothing();
// 创建触发器绑定计划
CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(触发器名, 触发器组)
.withSchedule(scheduleBuilder).build();
- 添加调度作业
scheduler.scheduleJob(jobDetail, trigger);
开发步骤
-
pom.xml 引入maven包
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.3.0</version>
</dependency>
-
创建quartz.properties
#============================================