目录
@Scheduled注解是spring boot提供的⽤于定时任务控制的注解,主要⽤于控制任务在某个指定时间执⾏,或者每隔⼀段时间执⾏。
注意需要配合@EnableScheduling使⽤,定时任务需要在配置类上添加@EnableScheduling,表示对定时任务的支持;在对应执行任务的方法上添加@Scheduled,声明需要执行定时任务的方法。
配置@Scheduled主要有三种配置执⾏时间的⽅式:cron,fixedRate,fixedDelay
@Scheduled注解中包含以下几个参数:
1)cron是设置定时执行的表达式,如:
@Scheduled(cron = "0 0 6,18 * * ? ") //每天6点和18点调用一次
@Scheduled(cron = "0 0/59 * * * ?")//每小时执行一次
2)zone表示执行时间时区
3)fixedDelay 和fixedDelayString 表示固定延迟时间,上个任务完成后,延迟多长时间执行
如:@Scheduled(fixedDelay = 10000) //任务会在上个任务完成后经过10s再执行
@Scheduled(fixedDelay = 3600000) //任务会在上个任务完成后一小时再执行
fixedDelayString 同fixedDelay ,时间值是String类型
值可以从配置文件获得
如:@Scheduled(fixedDelayString = "${fixedDelayString}")
4)fixedRate 和fixedRateString表示固定频率,上个任务开始后,多长时间后开始执行
如:@Scheduled(fixedRate = 1000 * 60) //按照一定频率执行任务,每隔1分钟执行一次
fixedRateString 同fixedRate ,时间值是String类型
值可以从配置文件获得
如:@Scheduled(fixedRateString = "${fixedRateString}")
5)initialDelay 和initialDelayString表示初始延迟时间,第一次被调用前延迟的时间
如:@Scheduled(initialDelay = 10000,fixedRate = 15000)//在容器启动后,延迟10秒后再执行一次定时器,以后每15秒再执行一次该定时器。
项目启动执行定时任务可以用@PostConstruct注解,放在要执行的方法上
@Scheduled(cron = “0 */30 * * * ?”) //每30分钟执行一次
@PostConstruct //启动项目先执行
public void scheduled() {
…
}