1 概述
@Scheduled注解是spring boot提供的用于定时任务控制的注解,主要用于控制任务在某个指定时间执行,或者每隔一段时间执行.注意需要配合@EnableScheduling使用,配置@Scheduled主要有三种配置执行时间的方式,cron,fixedRate,fixedDelay.
2 cron
cron是@Scheduled的一个参数,是一个字符串,以5个空格隔开,只允许6个域(注意不是7个,7个直接会报错),分别表示秒,分,时,日,月,周.
![v2-21f45f45df3f7b64573b6d8e0757160a_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=9d01ffc5-e72f-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-21f45f45df3f7b64573b6d8e0757160a_b.jpg)
2.1 cron通配符
![v2-a552c98203f8cef5940c7a0aff9cd348_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=9d01ffc5-e72f-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-a552c98203f8cef5940c7a0aff9cd348_b.jpg)
2.2 cron示例
@Scheduled
cron支持占位符,若在配置文件中有
cron
则
@Scheduled
表示每年的二月二号的两时两分两秒执行.
3 fixedRate
3.1 fixedRate
fixedRate表示自上一次执行时间之后多长时间执行,以ms为单位. 如
@Scheduled
自上次执行之后5秒再执行.
3.2 fixedRateString
有一个类似的参数叫fixedRateString,是字符串的形式,支持占位符. 如
@Scheduled
自上次执行1秒再执行. 若在配置文件中有相应的属性,可以用占位符获取属性,如在application.properties中有
interval=2000
可以使用
@Scheduled
表示2秒间隔.
4 fixedDelay
4.1 fixedDelay
fixedDelay与fixedRate有点类似,不过fixedRate是上一次开始之后计时,fixedDelay是上一次结束之后计时,也就是说,fixedDelay表示上一次执行完毕之后多长时间执行,单位也是ms.
@Scheduled
4.2 fixedDelayString
与fixedRateString类似,也是支持占位符
@Scheduled
5 initialDelay
5.1 initialDelay
initialDelay表示首次延迟多长时间后执行,单位ms,之后按照cron/fixedRate/fixedRateString/fixedDelay/fixedDelayString指定的规则执行,需要指定其中一个规则.
@Scheduled
5.2 initialDelayString
与initialDelay类似,不过是字符串,支持占位符.
@Scheduled