让 Spring @Scheduled 任务每 15 分钟运行
Spring 中“每 15 分钟”的表达式是 0 */15 * * * *。下面是可直接粘贴的配置、接下来的运行时间和需要注意的地方。 Spring 的 @Scheduled(cron) 使用六个字段,秒在最前,设置了的日期字段必须同时满足。
0 */15 * * * *在工具中打开“每隔 15 分钟”
@Scheduled 方法
@Scheduled
@Scheduled(cron = "0 */15 * * * *", zone = "UTC")
public void every15Minutes() {
// job
}Spring 的坑
秒在最前Spring 表达式有六个字段:秒、分、时、日、月、星期。五段式 crontab 会被拒绝。
两个日期字段必须同时满足0 0 9 1-7 * MON 是每月第一个周一。同样的字段在 crontab 里表示 1-7 号或任意周一。
周日是 0 或 7和 Quartz 不同,Quartz 周日是 1。在两者之间搬表达式时,用名称(MON-SUN)最安全。
要先开启调度在配置类上加 @EnableScheduling,否则 @Scheduled 方法不会运行。默认所有任务共用一个线程。
常见问题
Spring 中“每 15 分钟”的 cron 表达式是什么?
0 */15 * * * *。含义:每隔 15 分钟
Spring 的定时任务按哪个时区运行?
按 JVM 默认时区。在 @Scheduled 上设置 zone = "Asia/Shanghai"(任意 IANA 名)即可固定。
Spring cron 能每 30 秒运行吗?
能。Spring 有秒字段:*/30 * * * * *。
Spring 支持 L 和 # 吗?
支持,从 Spring 5.3 起:日字段支持 L、LW、L-n 和 nW,星期字段支持 dL 和 d#n。