Spring Boot 集成 Quartz 实现定时任务(Cron 表达式示例)

Spring Boot 集成 Quartz 实现定时任务(Cron 表达式示例)

Spring Boot 集成 Quartz 实现定时任务(Cron 表达式示例)

前言

在 Spring Boot 项目中,我们经常需要定时执行某些任务,例如定期清理数据库、同步数据、发送通知等。Quartz 是一个强大的任务调度框架,可以通过 Cron 表达式 实现灵活的任务调度。本篇文章将介绍如何在 Spring Boot 中集成 Quartz 并使用 Cron 表达式 进行任务调度。


1. 添加 Quartz 依赖

Spring Boot 项目中,首先需要引入 Quartz 相关依赖。

如果使用 Maven,在 pom.xml 中添加以下依赖:

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

如果使用 Gradle,则添加:

implementation 'org.springframework.boot:spring-boot-starter-quartz' 

2. 创建 Quartz 任务

在 Quartz 中,每个定时任务需要继承 org.quartz.Job 接口,并实现 execute 方法。

importorg.quartz.Job;importorg.quartz.JobExecutionContext;importorg.quartz.JobExecutionException;importjava.time.LocalDateTime;publicclassMyQuartzJobimplementsJob{@Overridepublicvoidexecute(JobExecutionContext context)throwsJobExecutionException{System.out.println("Quartz 定时任务执行中:"+LocalDateTime.now());}}

3. 配置 Quartz 任务调度

Spring Boot 允许通过 SchedulerFactoryBean 配置 Quartz 任务,并使用 @Bean 方式定义任务的调度规则。

importorg.quartz.*;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;@ConfigurationpublicclassQuartzConfig{// 定义 JobDetail@BeanpublicJobDetailmyJobDetail(){returnJobBuilder.newJob(MyQuartzJob.class).withIdentity("myQuartzJob")// 任务名称.storeDurably().build();}// 定义触发器,使用 Cron 表达式@BeanpublicTriggermyJobTrigger(){returnTriggerBuilder.newTrigger().forJob(myJobDetail()).withIdentity("myQuartzTrigger")// 触发器名称.withSchedule(CronScheduleBuilder.cronSchedule("0 0/5 0-7 ? * * *"))// Cron 表达式.build();}}

在上述配置中,我们的定时任务:

  • 每 5 分钟执行一次
  • 每天从 00:00 到 07:59 之间执行
  • 使用 Cron 表达式 0 0/5 0-7 ? * * *

如果需要 08:00 也执行一次,可以修改 Cron 表达式为:

0 0/5 0-8 ? * * * 

4. 启动 Spring Boot 观察定时任务执行

启动 Spring Boot 项目,观察控制台输出:

Quartz 定时任务执行中:2024-03-19T00:00:00 Quartz 定时任务执行中:2024-03-19T00:05:00 Quartz 定时任务执行中:2024-03-19T00:10:00 ... Quartz 定时任务执行中:2024-03-19T07:55:00 

如果 Cron 表达式修改为 0 0/5 0-8 ? * * *,则会多执行一次:

Quartz 定时任务执行中:2024-03-19T08:00:00 

5. Quartz Cron 表达式详解

Quartz 的 Cron 表达式有 7 个字段,每个字段的含义如下:

字段允许值说明
秒(Seconds)0-59任务触发的秒数
分(Minutes)0-59任务触发的分钟数
小时(Hours)0-23任务触发的小时数
日期(Day of month)1-31任务触发的日期(不能与 Day of week 同时指定)
月份(Month)1-12 或 JAN-DEC任务触发的月份
星期(Day of week)1-7 或 SUN-SAT任务触发的星期几
年(可选)空 或 1970-2099任务触发的年份

示例 Cron 表达式

  • 0 0 12 * * ?每天中午 12:00 执行
  • 0 0/30 * * * ?每 30 分钟执行一次
  • 0 15 10 * * ?每天 10:15 执行
  • 0 0 8-20/2 * * ?每天 08:00 - 20:00 之间,每 2 小时执行一次

6. 结论

本篇文章介绍了如何在 Spring Boot 中集成 Quartz 进行定时任务调度,并通过 Cron 表达式 控制任务执行时间。Quartz 提供了更强大的任务调度能力,比 @Scheduled 注解更灵活,适用于复杂的定时任务需求。

你是否在项目中使用 Quartz?欢迎在评论区分享你的经验! 🚀

Read more

【2026 最新】Python 与 PyCharm 详细下载安装教程 带图展示(Windows 版)

【2026 最新】Python 与 PyCharm 详细下载安装教程 带图展示(Windows 版)

前言 Python 是当今最流行的编程语言之一,广泛应用于 Web 开发、数据分析、人工智能、自动化脚本等领域。而 PyCharm 作为 JetBrains 公司推出的 Python 专业集成开发环境(IDE),凭借智能代码补全、调试器、虚拟环境管理、版本控制集成等强大功能,成为众多开发者首选工具。 本教程专为 Windows 系统用户 编写,将手把手指导你完成 Python 解释器 和 PyCharm IDE 的下载、安装与基础配置,助你快速搭建本地 Python 开发环境。 一、Python 下载与安装 1.1 访问 Python 官网 打开浏览器,访问 Python 官方网站:Download

By Ne0inhk
《C++进阶之STL》【红黑树】

《C++进阶之STL》【红黑树】

【红黑树】目录 * 前言: * ------------概念介绍------------ * 1. 什么是红黑树? * 2. 红黑树的基本特性是什么? * 3. 红黑树的效率怎么样? * 4. 红黑树如何确保最长路径不超过最短路径的2倍? * ------------基本操作------------ * 一、查找操作 * 二、插入操作 * 1. 本质 * 2. 步骤 * 情况1:变色 * 情况2:变色 + 单旋 * 情况3:变色 + 双旋 * 三、验证操作 * ------------代码实现------------ * 红黑树的存储结构是什么样的? * 一、节点的存储结构 * 二、树的存储结构 * 实现文件:RBTree.h * 测试文件:Test.cpp * 运行结果: * ------------终极对决------------ * 一、选手登场 * AVL树的源代码 * 红黑树的源代码 * 二、

By Ne0inhk

C++内核启动太慢?这4种静态配置优化方法你必须掌握

第一章:C++内核配置静态优化与启动加速概述 在现代高性能系统开发中,C++常被用于构建对启动速度和运行效率要求极高的内核级组件。通过对编译期配置的精细控制与静态优化策略的应用,可显著减少初始化开销,提升程序冷启动性能。这一过程不仅涉及编译器优化选项的合理选择,还包括对模板实例化、静态构造函数以及链接时优化(LTO)等机制的深度利用。 静态优化的核心技术手段 * 启用链接时优化以消除未使用的代码段 * 使用 -fvisibility=hidden 减少符号导出开销 * 通过 constexpr 和模板元编程将计算前移至编译期 * 禁用异常与RTTI以降低运行时支持成本 关键编译选项配置示例 # 启用全面优化与链接时优化 g++ -O3 -flto -fwhole-program \ -fvisibility=hidden -DNDEBUG \ -fno-exceptions -fno-rtti \ -o kernel core.cpp runtime.cpp 上述指令组合通过开启LTO(-flto)实现跨编译单元优化,同时关闭异常处理和类型信息以精简二进制体积,适

By Ne0inhk
CCF-GESP 等级考试 2025年9月认证C++一级真题解析

CCF-GESP 等级考试 2025年9月认证C++一级真题解析

2025年9月真题 一、单选题(每题2分,共30分) 正确答案:D 考察知识点:计算机相关知识 解析:在人工智能领域,“大模型” 最贴切的通常是指大语言模型。大语言模型是基于大规模文本数据训练的,能够理解和生成自然语言等内容,像常见的 ChatGPT 等就属于大语言模型范畴。而选项 A “大电脑模型” 表述不准确;选项 B “大规模智能” 不是对 “大模型” 的准确指代;选项 C “智能的单位” 也不符合 “大模型” 的定义。答案为D。 正确答案:C 考察知识点:流程控制语句 解析:计算 1 到 10001 之间的所有偶数和,需要重复累加操作(循环结构),且需判断是否为偶数(分支结构)。仅用顺序结构无法实现重复操作和条件判断,

By Ne0inhk