Spring 教程

Spring 笔记

Spring 定时任务的每小时/分钟/秒执行的 cron 表达式的写法?

Spring 笔记 Spring 笔记


Spring 的 cron 表达式至少有 6 个(也可能 7 个)空格分隔的时间元素,这个要区别于 Linux 系统的 crontab 表达式的 5 个时间元素。它主要有两种形式,一个是定频的设置,另一种是定点的使用。

Spring cron 语法

Spring 的 cron 表达式至少有 6 个(也可能 7 个)空格分隔的时间元素,时间控制粒度可精确到秒。具体如下:

.---------------------- second (0 - 59) - 秒
|  .------------------- minute (0 - 59) - 分钟
|  |  .---------------- hour (0 - 23) - 小时
|  |  |  .------------- day of month (1 - 31) - 月的第几天
|  |  |  |  .---------- month (1 - 12) OR jan,feb,mar,apr,... - 月份
|  |  |  |  |  .------- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,... - 星期的第几天
|  |  |  |  |  |  .---- year (option empty) - 年
|  |  |  |  |  |  |
*  *  *  *  *  *  *

最后一位,即第 7 位表示年份,可以留空。

特殊字符 * 表示所有值;

特殊字符 ? 表示未说明的值,即不关心它为何值;

Spring cron 表达式

定频示例

每隔 1 小时执行的表达式:

0 0 0/1 * * ?

每隔 30 分钟执行的表达式:

0 0/30 * * * ?

每隔 10 秒执行的表达式:

0/10 * * * * ?

定点示例

每天凌晨 0 点 5 分执行任务的表达式:

0 5 0 * * ?

每天 10 点到 16 点的 18 分定点执行生效的表达式:

0 18 10-16 * * ?