# 基础使用
Quartz 的核心类有以下三部分:
- 任务 Job : 需要实现的任务类,实现
execute()
方法,执行后完成任务。 - 触发器 Trigger : 包括
SimpleTrigger
和CronTrigger
。 - 调度器 Scheduler : 任务调度器,负责基于
Trigger
触发器,来执行 Job 任务。
# 添加依赖
<!-- 核心包 --> | |
<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> |
# demo
QuartzConfig 类
这个类用来进行任务描述,进行定时执行并将对应的执行逻辑类进行绑定
import org.quartz.*; | |
import org.springframework.context.annotation.Bean; | |
import org.springframework.context.annotation.Configuration; | |
/** | |
* 定义任务描述和具体的执行时间 | |
*/ | |
@Configuration | |
public class QuartzConfig { | |
@Bean public JobDetail jobDetail() { | |
// 指定任务描述具体的实现类 | |
return JobBuilder.newJob(IDCardWarningJob.class) | |
// 指定任务的名称 | |
.withIdentity("IDCardWarningJob") | |
// 任务描述 | |
.withDescription("任务描述:身份预警更新表") | |
// 每次任务执行后进行存储 | |
.storeDurably() | |
.build(); | |
} | |
@Bean | |
public Trigger trigger() { | |
// 创建触发器 | |
return TriggerBuilder.newTrigger() | |
// 绑定工作任务 | |
.forJob(jobDetail()) | |
// .withSchedule (CronScheduleBuilder.dailyAtHourAndMinute (1, 0)) // 设置每天凌晨 1 点触发一次任务 | |
.withSchedule(CronScheduleBuilder.cronSchedule("0 0 1 * * ?")) // 设置每天凌晨 1 点触发一次任务 | |
.build(); | |
} | |
} |
demoJob 类
这个类负责定时任务的逻辑处理(execute 方法中写代码逻辑)
import com.alibaba.druid.support.logging.Log; | |
import com.alibaba.druid.support.logging.LogFactory; | |
import com.iknight.cost.service.IdentityWarningService; | |
import org.quartz.Job; | |
import org.quartz.JobExecutionContext; | |
import org.quartz.JobExecutionException; | |
import org.springframework.beans.factory.annotation.Autowired; | |
public class IDCardWarningJob implements Job { | |
private static final Log logger = LogFactory.getLog(IDCardWarningJob.class); | |
@Autowired | |
private IdentityWarningService service; | |
public void setClaimPostServiceImpl(IdentityWarningService service) { | |
this.service = service; | |
} | |
@Override | |
public void execute(JobExecutionContext context) throws JobExecutionException { | |
service.updateDate(); | |
} | |
} |
关于 cron 表达式可以跳转这个连接 -> 表达式生成器