SpringBoot3.4.1整合Quartz定时任务
SpringBoot3.4.1整合Quartz定时任务

蛇年到啦,愿你今年的每一个小目标都轻松达成,收获满满的快乐与成长。不管遇到什么,都能元气满满,万事胜意!
前一篇文章SpringBoot3.4.1和Spring Security6.4.2结合JWT实现用户登录。今天基于SpringBoot3.4.1整合Quartz定时任务。
完整代码在文章最后,如果觉得本篇文章对你有用,记得点赞、关注、收藏哦。你的支持是我持续更新的动力!
文章最后可以加入免费的Java技术栈沟通社群,请按照要求加入。在群中可以聊开发、系统设计、架构、行业趋势、AI等等话题
SpringBoot3专栏软件环境
- JDK17.0.12
- SpringBoot3.4.1
- spring-boot-starter-quartz3.4.1
- Quartz Scheduler2.3.2
- IDEA2024.3.2
我们先看本篇文章对应的项目结构,请看下图

1 什么是 Quartz Scheduler
Quartz Scheduler 是 Java 平台下的一个强大、灵活的调度库,它支持复杂的任务调度,具体包括:
- 简单的任务:按固定频率或延迟执行任务。
- 基于 cron 表达式的任务:支持类似于 Linux cron 的表达式,用于定义复杂的定时任务。
- 持久化任务:支持将任务数据持久化存储,以便在应用程序重启后可以恢复任务状态。
GitHub地址:https://github.com/quartz-scheduler/quartz
官网地址:https://www.quartz-scheduler.org/
2 代码实现流程
2.1 pom依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cn.itbeien</groupId>
<artifactId>springboot3-labs-master</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<groupId>cn.itbeien.quartz</groupId>
<artifactId>springboot-quartz</artifactId>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
</project>
2.2 配置信息
spring.application.name=sq
# 定时任务配置,定时任务存储类型为内存存储
spring.quartz.job-store-type=memory
# 线程池配置 配置线程池线程数为 5
spring.quartz.properties.org.quartz.threadPool.threadCount=5
# 设置作业存储 错过触发阈值为 60000 毫秒(1分钟)
spring.quartz.properties.org.quartz.jobStore.misfireThreshold=60000
2.3 核心代码实现
2.3.1 quartz定时任务类
package cn.itbeien.quartz.job;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import lombok.extern.slf4j.Slf4j;
import org.quartz.JobExecutionException;
import org.springframework.stereotype.Component;
/**
* @author itbeien
* 项目网站:https://www.itbeien.cn
* 公众号:贝恩聊架构
* 全网同名,欢迎小伙伴们关注
* Copyright© 2025 itbeien
*/
@Component
@Slf4j
public class ReportJob implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
log.info("process ReportJob: " + context.getFireTime());
}
}
2.3.2 任务调度配置类
package cn.itbeien.quartz.config;
import cn.itbeien.quartz.job.ReportJob;
import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author itbeien
* 项目网站:https://www.itbeien.cn
* 公众号:贝恩聊架构
* 全网同名,欢迎小伙伴们关注
* Copyright© 2025 itbeien
* 任务调度配置类
*/
@Configuration
public class QuartzConfig {
@Bean
public JobDetail reportJobDetail() {
return JobBuilder.newJob(ReportJob.class)
.withIdentity("reportJob")
.storeDurably()
.build();
}
@Bean
public Trigger reportJobTrigger() {
SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(15) // 每 15 秒执行一次
.repeatForever();
return TriggerBuilder.newTrigger()
.forJob(reportJobDetail())
.withIdentity("reportJobTrigger")
.withSchedule(scheduleBuilder)
.build();
}
/**
* 基于 Cron 表达式的任务调度
*/
@Bean
public Trigger cronJobTrigger() {
return TriggerBuilder.newTrigger()
.forJob(reportJobDetail())
.withIdentity("cronJobTrigger")
.withSchedule(CronScheduleBuilder.cronSchedule("0 0/1 * 1/1 * ? *")) // 每分钟执行一次
.build();
}
}
3 代码测试
3.1 运行项目
出现如下图所示的日志代表定时任务执行成功

通过将 Spring Boot 3.4.1 与Quartz Scheduler 框架集成,我们可以根据具体业务需求实现强大并且灵活的定时任务调度平台系统。本篇文章介绍了 Quartz Scheduler的基本配置和使用方法,包括如何配置定时任务、触发器,以及使用 cron 表达式实现复杂的调度策略,完整代码在文章最后进行获取!
欢迎大家关注我的项目实战内容itbeien.cn,一起学习一起进步,在项目和业务中理解各种技术。

欢迎沟通交流技术和支付业务,一起探讨聚合支付/预付卡系统业务、技术、系统架构、微服务、容器化。并结合聚合支付系统深入技术框架/微服务原理及分布式事务原理。加入我的知识星球吧

SpringBoot3专栏
01SpringBoot3专栏-SpringBoot3.4.0整合Mybatis-plus和Mybatis
02SpringBoot3.4.0结合Mybatis-plus实现动态数据源
03mapstruct对象映射在Springboot3中这样用就对了
04RocketMQ5.3.1集成SpringBoot3.4.0就这样简单
05SpringBoot3.4.0整合Redisson实现分布式锁
06MySQL增量数据同步利器Canal1.1.7环境搭建流程
07SpringBoot3.4.0集成Canal1.1.7实现MySQL实时同步数据到Redis
08基于Docker-SpringBoot3.4.0集成Apache Pulsar4.0.1实现消息发布和订阅
09SpringBoot3.4.0整合消息中间件Kafka和RabbitMQ
10SpringBoot3.4.0整合ActiveMQ6.1.4
11SpringBoot3整合Spring Security6.4.2 安全认证框架实现简单身份认证
12SpringBoot3.4.1和Spring Security6.4.2实现基于内存和MySQL的用户认证
13SpringBoot3.4.1和Spring Security6.4.2结合OAuth2实现GitHub授权登录
14SpringBoot3.4.1和Spring Security6.4.2结合JWT实现用户登录
跟着我学微服务系列
01跟着我学微服务,什么是微服务?微服务有哪些主流解决方案?
05SpringCloudAlibaba之图文搞懂微服务核心组件在企业级支付系统中的应用
06JDK17+SpringBoot3.4.0+Netty4.1.115搭建企业级支付系统POS网关
07JDK17+SpringCloud2023.0.3搭建企业级支付系统-预付卡支付交易微服务
08JDK17+Dubbo3.3.2搭建企业级支付系统-预付卡支付交易微服务
09JDK17+SpringBoot3.3.6+Netty4.1.115实现企业级支付系统POS网关签到功能
贝恩聊架构-项目实战地址
欢迎大家一起讨论学习,加我备注"JAVA"拉你进入技术讨论群,在技术学习、成长、工作的路上不迷路!加我后不要急,每天下午6点左右通过!营销号免入

4 源码地址
贝恩聊架构-SpringBoot3专栏系列文章、资料和源代码会同步到以下地址,代码和资料每周都会同步更新
该仓库地址主要用于贝恩聊架构-SpringBoot3专栏、基于企业级支付系统,学习微服务整体技术栈
