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

Git: filter-repo历史重写工具介绍

文章目录 * `git-filter-repo` 深度指南:安全高效重写 Git 历史 * 一、为什么需要 `git-filter-repo`?核心价值 * 1. 与传统工具对比 * 2. 核心优势 * 二、安装与验证 * 1. 安装方法 * 2. 验证安装 * 三、核心工作原理 * 1. 执行流程 * 2. 关键安全机制 * 四、10 大高频使用场景(含完整命令) * 场景 1:彻底删除目录(用户原始需求) * 场景 2:删除大文件(仓库瘦身) * 场景 3:重写提交者信息(合规需求) * 场景 4:提取子目录为独立仓库(微服务拆分) * 场景 5:合并多个仓库历史 * 场景

By Ne0inhk

Fast-GitHub网络加速完全指南:彻底解决GitHub访问卡顿问题

还在为GitHub加载缓慢、下载龟速而困扰吗?Fast-GitHub作为一款专为国内开发者设计的智能网络加速插件,通过创新的技术手段彻底优化GitHub访问体验。这款工具能够智能识别GitHub资源请求,自动切换到最优网络节点,让你的开发效率实现质的飞跃。 【免费下载链接】Fast-GitHub国内Github下载很慢,用上了这个插件后,下载速度嗖嗖嗖的~! 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub 🎯 GitHub访问难题的终极解决方案 常见困扰场景: * 紧急项目需要从GitHub拉取依赖包,但网络连接频繁中断 * 重要的开源代码库下载进度长期停滞 * 团队协作时无法及时获取最新代码更新 传统方法对比分析: 加速方式操作复杂度稳定性维护成本系统代理中等一般需要定期调整网络加速服务复杂不稳定额外费用支出 * 系统代理:设置繁琐,影响其他应用运行 * 网络加速服务:配置复杂,稳定性难以保证 * hosts调整:需要手动维护,容易失效 Fast-GitHub采用轻量级插件设计,一键安装即

By Ne0inhk
Answer 开源平台搭建:cpolar 内网穿透服务助力全球用户社区构建

Answer 开源平台搭建:cpolar 内网穿透服务助力全球用户社区构建

文章目录 * 前言 * 1. 本地安装Docker * 2. 本地部署Apache Answer * 2.1 设置语言选择简体中文 * 2.2 配置数据库 * 2.3 创建配置文件 * 2.4 填写基本信息 * 3. 如何使用Apache Answer * 3.1 后台管理 * 3.2 提问与回答 * 3.3 查看主页回答情况 * 4. 公网远程访问本地 Apache Answer * 4.1 内网穿透工具安装 * 4.2 创建远程连接公网地址 * 5. 固定Apache Answer公网地址 前言 在开源社区运营中,问答平台的全球化访问始终面临双重挑战:一方面需要保障数据主权与隐私安全,另一方面要实现低延迟的跨地域访问。Answer

By Ne0inhk
开源模型应用落地-安全合规篇-用户输入价值观判断(四)

开源模型应用落地-安全合规篇-用户输入价值观判断(四)

一、前言     在深度合规功能中,对用户输入内容的价值观判断具有重要意义。这一功能不仅仅是对信息合法性和合规性的简单审核,更是对信息背后隐含的伦理道德和社会责任的深刻洞察。通过对价值观的判断,系统能够识别可能引发不当影响或冲突的内容,从而为用户提供更安全、更和谐的交流环境。这种机制有助于培养用户积极、正向的思维方式,鼓励多元化但和谐的观点交流。     同时,它还能够保护易受伤害群体,防止网络欺凌、仇恨言论或其他形式的负面影响,使整个网络环境更具包容性和合作性。因此,价值观判断不仅提升了技术系统的智能性,还在更广泛的社会层面推动了道德标准的提高和社会文化的进步。     本篇介绍如何将“开源模型应用落地-安全合规篇-用户输入价值观判断(三)”功能集成进AI服务。     前置学习:     开源模型应用落地-安全合规篇-用户输入合规性检测(一)

By Ne0inhk