Springboot 定时任务cron表达式

Cron表达式是一个强大的字符串,用于在Unix/Linux系统中配置cron job(计划任务)的时间表。然而,在Spring框架(包括Spring Boot)中,Cron表达式也被广泛使用于@Scheduled注解中,以定义定时任务的执行计划。

Cron表达式由六或七个空格分隔的时间字段组成,分别表示:

  1. 秒(0-59)(Spring的@Scheduled支持秒字段,而传统的Unix/Linux cron作业不支持)
  2. 分(0-59)
  3. 小时(0-23)
  4. 日(1-31)
  5. 月(1-12 或 JAN-DEC)
  6. 星期(0-7 或 SUN-SAT,其中0和7都代表星期日)
  7. 年(可选字段,留空或1970-2099)(注意:并非所有的cron实现都支持年字段)

每个字段都可以包含特定的值、范围、列表或通配符(*),来定义任务的执行时间。

示例

  • 0 0 8 * * ?:每天上午8点触发
  • 0 15 10 ? * *:每天上午10:15触发
  • 0 0/5 14 * * ?:在每天下午2点到2:59期间的每5分钟触发
  • 0 0/30 8-10 ? * *:在每天上午8点、8:30、9点、9:30、10点和10:30触发
  • 0 0 8-10 ? * MON-FRI:仅在工作日(星期一至星期五)的上午8点到10点期间的每小时的开始时刻触发
  • 0 0 8 ? * 6L:在每个月的最后一个星期六的上午8点触发
  • 0 0 8-10 ? * L-2:在每个月的最后两天(即倒数第二天和最后一天)的上午8点到10点期间的每小时的开始时刻触发

注意事项

  • 在Spring的@Scheduled注解中使用Cron表达式时,不需要考虑系统的时区设置,因为它默认使用Spring容器的时区。
  • Cron表达式中的星期字段(第6个字段)中的0和7都代表星期日,这可能会引起混淆。
  • 并非所有的cron实现都支持秒字段或年字段。然而,在Spring的@Scheduled注解中,秒字段是支持的。
  • Cron表达式的解析和调度是由Spring的TaskScheduler接口的实现(如ThreadPoolTaskScheduler)来完成的,因此它提供了比传统Unix/Linux cron作业更灵活和强大的功能。

最后,要记得在Spring Boot应用中使用@EnableScheduling注解来启用定时任务的支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值