使用@Scheduled注解时Cron表达式报错的问题求助
问题原因与解决方法
报错原因分析
第一个错误(字段数量不符):
Spring的@Scheduled注解使用6字段标准Cron格式(秒 分 时 日 月 周),你生成的表达式多了一个末尾的*(多余的年份字段),导致总字段数变成7个,不符合默认解析规则。第二个错误(字段规则冲突+格式仍错误):
去掉?后仍保留7个字段,同时违反Spring Cron核心规则:日和周字段不能同时指定具体匹配规则——你用*指定所有日期,又用MON-FRI指定周范围,两者冲突;再加上多余的年份字段,最终导致解析失败。
解决方法
使用符合Spring规范的6字段Cron表达式,同时确保日和周字段二选一用?忽略,正确代码如下:
@Scheduled(cron = "0 0 8-20 ? * MON-FRI") public void deleteExpiredSlots() { //my code here }
表达式说明:
0:秒位,指定整分执行0:分位,指定整时执行8-20:时位,指定8点到20点的每个整点?:日位,忽略日期匹配(因已通过周字段指定执行范围)*:月位,匹配所有月份MON-FRI:周位,匹配周一到周五
内容的提问来源于stack exchange,提问作者asdrubalo
相关产品推荐
相关产品推荐

