Spring定时任务cron表达式解析
Spring框架中的定时任务注解,用于配置任务执行的时间规则。
代码含义
@Scheduled(cron = "0 * 12 */5 * ?")表示一个每5天的中午12点整开始,每小时执行一次的任务。
Cron表达式分解
"0 * 12 */5 * ?" 各字段含义:
| 位置 | 字段 | 值 | 含义 |
|---|---|---|---|
| 1 | 秒 | 0 | 第0秒 |
| 2 | 分 | * | 每分钟 |
| 3 | 时 | 12 | 12点(中午) |
| 4 | 日 | */5 | 每5天 |
| 5 | 月 | * | 每月 |
| 6 | 周 | ? | 不指定星期 |
执行时间示例
1月1日 12:00, 12:01, 12:02, ..., 12:59
1月6日 12:00, 12:01, 12:02, ..., 12:59
1月11日 12:00, 12:01, 12:02, ..., 12:59
以此类推,每5天执行一次
可能的修正
如果意图是每5天的中午12点整执行一次,应该改为:
@Scheduled(cron = "0 0 12 */5 * ?")这样会在每5天的12:00:00准时执行一次。
常用Cron示例
// 每天12点执行
@Scheduled(cron = "0 0 12 * * ?")// 每5天12点执行
@Scheduled(cron = "0 0 12 */5 * ?")// 工作日9点执行
@Scheduled(cron = "0 0 9 * * MON-FRI")