框架介绍

Quartz框架是一个开源的作业调度(Job Scheduling)框架。它可以在指定的时间触发特定的任务,并按照预定的时间间隔执行任务。简单来说,Quartz框架就是用来在指定时间执行任务的工具。

Github : https://github.com/quartz-scheduler/quartz/tree/main

官网https://www.quartz-scheduler.org/

在线Cron工具:https://cron.qqe2.com/

Cron语法规则:https://blog.csdn.net/qq_42776455/article/details/109765552

工作原理

Quartz框架有四个组成部分

  1. Job:要执行的具体任务内容
  2. JobDetail:存放Job的各种信息的类,相当于存放Job任务的容器。
  3. Trigger :触发器,用于表示任务的触发的时机和频率。
  4. Scheduler :调度器,用于将触发器和任务类联系到一起,统一调度。

工作流程:先定义JobDetail类和Trigger触发器,再通过Scheduler 调度器启动任务。

基础实现

springboot 框架引入依赖

  <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-quartz</artifactId>
  </dependency>

首先,我们需要创建一个 Job 类来定义我们需要执行的任务,代码如下:

public class MyJob implements Job {
    public void execute(JobExecutionContext context) throws JobExecutionException {
        // 定义需要执行的任务,此处省略具体代码
        System.out.println("任务执行");
    }
}

接着,我们需要定义一个 Trigger,来触发该 Job 任务。代码如下:

Trigger trigger = newTrigger()
    .withIdentity("trigger1", "group1")
    .startAt(DateBuilder.eightPMToday())
    .withSchedule(cronSchedule("0 0 1 * * ?"))
    .forJob("job1", "group1")
    .build();

最后,我们通过 Scheduler 来启动任务。代码如下:

SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory();
Scheduler sched = schedFact.getScheduler();
sched.start();
sched.scheduleJob(job, trigger);

通过以上代码的组合,我们就可以实现在每天凌晨 1 点整执行指定任务的功能了。