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 * * ?