Spring Batch每周日01:30执行的CRON调度表达式是否正确?
问题结论
你的配置在Spring 5.3及以上版本可以实现每周日凌晨01:30执行任务的预期效果,低版本Spring环境下建议调整为兼容性更强的写法。
配置正确性验证
你使用的@Scheduled(cron = "0 30 01 * * 7")表达式逐位对应规则如下:
- 第1位(秒):
0→ 整秒触发 - 第2位(分钟):
30→ 30分时触发 - 第3位(小时):
01→ 凌晨1点触发 - 第4位(日):
*→ 不限制具体日期 - 第5位(月):
*→ 不限制具体月份 - 第6位(星期):
7→ 按照Spring 5.3+的cron规则,周日可使用0或7两种取值,符合你的需求。
优化建议
如果你的项目使用的Spring版本低于5.3,旧版本Spring cron规则仅将0识别为周日,7会被判定为无效取值,建议调整为兼容性和可读性更好的写法:
@Scheduled(cron = "0 30 1 * * SUN")
使用SUN这种星期缩写的写法,所有支持cron的Spring版本都能正确识别为周日,不存在版本兼容问题。
另外请确保你的项目配置类/启动类上已经添加了@EnableScheduling注解,否则@Scheduled的调度配置不会生效。
内容的提问来源于stack exchange,提问作者AndreaNobili
相关产品推荐
相关产品推荐

