@Scheduled注解
@Scheduled
注解是Spring Boot
提供的用于定时任务控制的注解,主要用于控制任务在某个指定时间执行,或者每隔一段时间执行。注意需要配合@EnableScheduling
使用。原文地址
@Scheduled
主要有三种配置执行时间的方式:
cron
fixedRate
fixedDelay
cron
cron
是@Scheduled
的一个参数,是一个字符串,以5个空格隔开,只允许6个域(注意不是7个,7个直接会报错),分别表示秒、分、时、日、月、周。
cron 通配符
示例
@Scheduled(cron = "0 * * * 1 SAT") //每年的1月的所有周六的所有0秒时间执行
@Scheduled(cron = "0 0 0 1 Jan ?") //每年的1月的1日的0时0分0秒执行
cron
支持占位符,若在配置文件中有
cron = 2 2 2 2 2 ?
则
@Scheduled(cron = "${cron}")
表示每年的二月二号的两时两分两秒执行。
fixedRate
fixedRate
表示自上一次执行时间之后多长时间执行,以毫秒为单位。
如
@Scheduled(fixedRate = 1000 * 5)
自上次执行之后5秒再执行。
fixedRateString
以字符串的参数传递值,并且支持从配置中读取,如:
# 表示2秒间隔。
@Scheduled(fixedRateStirng="${interval}")
fixedDelay
fixedDelay
与fixedRate
有点类似,不过fixedRate
是上一次开始之后计时,fixedDelay
是上一次结束之后计时,也就是说,fixedDelay
表示上一次执行完毕之后多长时间执行,单位也是毫秒。
@Scheduled(fixedDelay = 1000 * 3600 * 12) //上一次执行完毕后半天后再次执行
fixedDelayString
以字符串的参数传递值,并且支持从配置中读取,如:
@Scheduled(fixedDelayString = "${fixedDelay}")
initialDelay
initialDelay
表示首次延迟多长时间后执行,单位毫秒,之后按照cron/fixedRate/fixedRateString/fixedDelay/fixedDelayString
指定的规则执行,需要指定其中一个规则。
@Scheduled(initialDelay=1000,fixedRate=1000) //首次运行延迟1s
initialDelayString
与initialDelay
类似,不过是字符串,支持占位符。
@Scheduled(initialDelayString = "${initialDelay}",cron = "0 0 0 14 4 ?")
//按照配置文件initialDelay指定的时间首次延迟,并于每年4月14日0时0分0秒执行