cron表达式
Spring的定时任务使用的是cron表达式,但不完全一样,主要是在星期几
这个值上。
有个项目需要每周一0点执行一次定时任务,结果发现没有准时执行。
正常的cron表达式,1代表周日,2代表周一,但是在Spring的@Scheduled里,0和7代表周日,1才是代表周一。
网上大多数文档都没提到这个问题(或许是版本差异?)
@Scheduled相关文档链接
贴个源码里的注释:
┌───────────── second (0-59)
│ ┌───────────── minute (0 - 59)
│ │ ┌───────────── hour (0 - 23)
│ │ │ ┌───────────── day of the month (1 - 31)
│ │ │ │ ┌───────────── month (1 - 12) (or JAN-DEC)
│ │ │ │ │ ┌───────────── day of the week (0 - 7)
│ │ │ │ │ │ (0 or 7 is Sunday, or MON-SUN)
│ │ │ │ │ │
* * * * * *
如果要使用到星期,建议使用周几的英文缩写作为值。
例如:0 0 0 ? * MON
。
示例
@Component
@Configuration //1.主要用于标记配置类,兼备Component的效果。
@EnableScheduling // 2.开启定时任务
public class SaticScheduleTask {
//3.添加定时任务
@Scheduled(cron = "0/5 * * * * ?")
//或直接指定时间间隔,例如:5秒
//@Scheduled(fixedRate=5000)
private void configureTasks() {
System.err.println("执行静态定时任务时间: " + LocalDateTime.now());
}
}
本文由 visionki 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Sep 26, 2022 at 06:43 am