工程中经常会用到计划任务,Spring Boot 中启用计划任务通过@EnableScheduling
、@Scheduled
两个注解就可以搞定。
1.启用计划任务
在Spring Boot启动类加上注解@EnableScheduling
,表示该工程启用计划任务
@EnableScheduling
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}
2.实现计划任务
在计划任务方法上加上@Scheduled
注解,表示该方法是一个计划任务,工程启动后会去在找加上该注解的方法加入计划任务列表。
/**
* 计划任务类
* Created by lujun.chen on 2017/2/25.
*/
@Component
public class CljSchedule {
/**
* 每五分钟执行一次
*/
@Scheduled(cron = "0/5 * * * * ?")
public void timer1(){
System.out.println(DateFormatUtils.ISO_8601_EXTENDED_DATETIME_FORMAT.format(new Date()));
}
}
3.@Scheduled参数说明
@Scheduled
注解有一些参数,用于配置计划任务执行频率,执行时段等。
- cron :cron表达式,
e.g. {@code "0 * * * * ?"}
从前到后依次表示秒 分 时 日 月 年 - zone:设置时区,指明计划任务运行在哪个时区下,默认为空,采用操作系统默认时区
- fixedDelay:同一个计划任务两次执行间隔固定时间,单位毫秒,上次执行结束到下次开始执行的时间,以long类型复制
- fixedDelayString:同一个计划任务两次执行间隔固定时间,单位毫秒,上次执行结束到下次开始执行的时间,以String类型赋值
- fixedRate:以一个固定频率执行,单位毫秒,表示每隔多久执行一次,以long类型赋值
- fixedRateString:以一个固定频率执行,单位毫秒,表示每隔多久执行一次,以String类型赋值
- initialDelay:延迟启动计划任务,单位毫秒,表示执行第一次计划任务前先延迟一段时间,以long类型赋值
- initialDelayString:延迟启动计划任务,单位毫秒,表示执行第一次计划任务前先延迟一段时间,以String赋值