SpringBoot Scheduled 定时任务的时间到底该怎么定义

SpringBoot Scheduled 定时任务的时间到底该怎么定义。~~~java // 每天凌晨零点执行

先给示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
// 每天凌晨零点执行
@Scheduled(cron ="0 0 0 * * * ?")

// 每天上午 10 点,下午 2 点,4 点
@Scheduled(cron ="0 0 10,14,16 * * ?")

// 朝九晚五内每半小时
@Scheduled(cron ="0 0/30 9-17 * * ?")

// 每星期三中午 12 点
@Scheduled(cron ="0 0 12 ? * WED")

// 每隔五分钟执行
@Scheduled(cron ="0 */5 0 * * * ?")

官网文档

Task Execution and Scheduling :: Spring Framework

Scheduled 参数详情

cron

Cron表达式是由Brian Kernighan和Vixie Cron的创始人之一,Ken Thompson在1975年创建的。Cron表达式是一种用于指定计划任务的语法,它由6个字段组成,分别表示分钟、小时、日、月、星期和要运行的命令。这种语法已经成为Unix和类Unix操作系统中最常用的计划任务语法之一。

@Scheduled(cron ="0 0 0 * * * ?") 一个 cron 表达式有至少6个(也可能7个)有空格分隔的时间元素

序号 含义 是否必填 入参范围 可填通配符
1 0~59 , - * /
2 0~59 , - * /
3 0~23 , - * /
4 1~31 , - * ? / L W
5 1~12 , - * /
6 周(周一 ~ 周日) 1~7 1为SUN-依次为SUN,MON,TUE,WED,THU,FRI,SAT , - * ? / L #
8 1970~2099 , - * /

*:字符代表所有可能的值 /:字符用来指定数值的增量 例如:在子表达式(分钟)里的“0/15”表示从第0分钟开始,每15分钟 在子表达式(分钟)里的“3/20”表示从第3分钟开始,每20分钟(它和“3,23,43”)的含义一样 ?:字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值 当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?” L:字符仅被用于天(月)和天(星期)两个子表达式,它是单词“last”的缩写 如果在“L”前有具体的内容,它就具有其他的含义了。例如:“6L”表示这个月的倒数第6天 注意:在使用“L”参数时,不要指定列表或范围,因为这会导致问题 W:代表着平日(Mon-Fri),并且仅能用于日域中。它用来指定离指定日的最近的一个平日。 大部分的商业处理都是基于工作周的,所以 W 字符可能是非常重要的。 假如15号是星期六,那么 trigger 会在14号(星期五)触发,因为星期四比星期一离15号更近。 C:代表“Calendar”的意思。它的意思是计划所关联的日期,如果日期没有被关联,则相当于日历中所有日期。

​ 例如5C在日期字段中就相当于日历5日以后的第一天。1C在星期字段中相当于星期日后的第一天。

#:第几个。 (cron=“* * * ? * 5#2”)表示每个月的第 2 个周四(5表示周四)

zone

zone能够指定获取的时区,默认是空,表示使用服务器所在时区,比如Asia/BeiJingi或者Asia/Shanghai。

fixedDelay

fixedDelay表示上次调用结束后与下次调用之间的固定时间,单位是毫秒。

@Scheduled(fixedDelay= 3000) 表示距离上次调用后三秒再执行

fixedDelayString

fixedDelayString与fixedDelay是几乎一样的,唯一的差异是fixedDelayString是支持占位符的。

fixedRate

fixedRate表示多久执行一次,单位是毫秒。与cron的/通配符用法相似;

@Scheduled(fixedRate= 3000) 表示每三秒执行一次

fixedRateString

fixedRate的升级,支持占位符

initialDelay

表示第一次延迟多少毫秒执行,单位是毫秒

@Scheduled(initialDelay= 3000) 表示第一次执行时,延迟3秒执行

initialDelayString

initialDelay的升级,支持占位符。

参考

Task Execution and Scheduling :: Spring Framework

cron表达式以及定时任务的简单使用_cron表达式工作日执行_迷你比特位的博客-CSDN博客

【Spring】定时任务详解实例-@Scheduled_51CTO博客_spring boot 定时任务

(23条消息) SpringBoot定时任务 @Scheduled详解_爱吃耙土豆的博客-CSDN博客

Gear(夕照)的博客。记录开发、生活,以及一些不足为道的思考……