文章目录
- 一、定时任务
- 二、quartz基本概念
- 三、整合quartz步骤
- 1、添加依赖
- 2、创建scheduler
- 3、创建Job
- 4、创建任务信息类
- 5、创建JobDetail和trigger包装类
- 6、控制层接口实现接口(执行一次、启动定时、暂停任务)
- 7、访问接口
- 细节解释
一、定时任务
要实现定时任务的功能应该具备:
1、临时执行一次任务。
2、启动定时任务,支持cron表达式
。
3、随时暂停任务。
4、应用重启后自动开启任务。
二、quartz基本概念
- 任务
Job
(接口):即想要调用的任务类,需要实现org.quartz.job接口
,并重写execute()
方法,任务调度时会执行execute()
方法。(最新版本继承QuartzJobBean类
,重写executeInternal方法
) - 触发器
Trigger
(接口):即执行任务的触发器,当满足什么条件时会去执行你的任务Job
,主要分为根据时长间隔执行的SimpleTrigger
和根据日历执行的CronTrigger
。 - 调度器
Scheduler
(接口):即将Trigger
和Job
绑定之后,根据Trigger
中的设定,负责进行Job
调度的组件。
三、整合quartz步骤
1、添加依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
2、创建scheduler
package com.xy.quartz;import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class QuartzConfig {@Beanpublic Scheduler scheduler() throws SchedulerException {SchedulerFactory schedulerFactoryBean = new StdSchedulerFactory();return schedulerFactoryBean.getScheduler();}
}
3、创建Job
import lombok.extern.slf4j.Slf4j;
import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.stereotype.Component;@Component
@Slf4j
public class MyJob implements Job {@Overridepublic void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {JobDataMap jobDataMap = jobExecutionContext.