SpringTask简介
简介
Spring Task 是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。
定位:定时任务框架
作用:定时自动执行某段Java代码
只要是需要定时处理的场景都可以使用Spring Task
cron表达式
cron表达式其实就是一个字符串,通过cron表达式可以定义任务触发的时间
构成规则:分为6或7个域,由空格分隔开,每个域代表一个含义
每个域的含义分别为:秒、分钟、小时、日、月、周、年(可选)
举例:
2022年10月12日上午9点整 对应的cron表达式为:0 0 9 12 10 ? 2022
说明:一般日和周的值不同时设置,其中一个设置,另一个用?表示
比如:描述2月份的最后一天,最后一天具体是几号不确定,可能是28号,也有可能是29号,所以就不能写具体数字
cron表达式在线生成器:https://cron.qqe2.com/
通配符
| 通配符 | 含义 | 适用字段 | 示例 |
|---|---|---|---|
* |
匹配该字段的所有可能值,即 “每” | 所有字段 | 分钟字段为*表示 “每分钟”;月份字段为*表示 “每月” |
? |
仅用于 “日” 和 “周” 字段,表示 “不指定值”(避免两者冲突) | 日、周 | 若指定 “每月 10 日”(日 = 10),则周字段需用?表示 “不关心周几” |
- |
表示范围,定义连续的时间区间 | 所有字段 | 小时字段9-18表示 “9 点到 18 点(含 9 和 18)” |
, |
表示列举多个独立的值 | 所有字段 | 周字段1,3,5表示 “周一、周三、周五”(1 = 周一,7 = 周日) |
/ |
表示 “间隔”,格式为 “起始值 / 步长”,即从起始值开始,每隔步长执行一次 | 秒、分、时、日、月、周 | 分钟字段0/15表示 “从 0 分开始,每 15 分钟”(0 分、15 分、30 分、45 分) |
L |
表示 “最后”,需结合具体字段理解 | 日、周 | - 日字段L表示 “当月最后一天”;- 周字段6L表示 “当月最后一个周六”(6 = 周六) |
W |
表示 “最近的工作日”(周一至周五),仅用于 “日” 字段 | 日 | 日字段15W表示 “15 日最近的工作日”(若 15 日是周六,则为 14 日周五) |
# |
表示 “当月第 n 个周几”,格式为 “周几 #n”,仅用于 “周” 字段 | 周 | 周字段2#3表示 “当月第 3 个周二”(2 = 周二) |
cron表达式案例
*/5 * * * * ? 每隔5秒执行一次
0 */1 * * * ? 每隔1分钟执行一次
0 0 5-15 * * ? 每天5-15点整点触发
0 0/3 * * * ? 每三分钟触发一次
0 0-5 14 * * ? 在每天下午2点到下午2:05期间的每1分钟触发
0 0/5 14 * * ? 在每天下午2点到下午2:55期间的每5分钟触发
0 0/5 14,18 * * ? 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时
0 0 10,14,16 * * ? 每天上午10点,下午2点,4点
案例演示
使用步骤
1.首先要导入Maven坐标,一般SpringBoot的起步依赖中已经传递进来了,无需手动导入
2.启动类添加注解 @EnableScheduling 开启任务调度
3.自定义定时任务类
代码演示
启动类:
|
|
自定义任务类:
|
|
运行结果:
