跳到正文
cron.surf

Spring cron 定时任务

Spring 的 @Scheduled(cron) 使用六个字段,秒在最前,设置了的日期字段必须同时满足。 选择一个调度,查看精确表达式、可直接粘贴的配置和接下来的运行时间。

调度

Spring 的坑

秒在最前Spring 表达式有六个字段:秒、分、时、日、月、星期。五段式 crontab 会被拒绝。
两个日期字段必须同时满足0 0 9 1-7 * MON 是每月第一个周一。同样的字段在 crontab 里表示 1-7 号或任意周一。
周日是 0 或 7和 Quartz 不同,Quartz 周日是 1。在两者之间搬表达式时,用名称(MON-SUN)最安全。
要先开启调度在配置类上加 @EnableScheduling,否则 @Scheduled 方法不会运行。默认所有任务共用一个线程。

与 Spring 互转

常见问题

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。