SpringBoot定时任务
2020.02.18 18:41
2020.03.14 09:44
1. 定时任务
项目开发中经常需要执行一些定时任务,每天定时执行一些操作!
Spring 自身提供了对定时任务的支持,本文将介绍 Spring Boot 中 @Scheduled 定时器的使用。
2. 创建定时任务
2.1. 步骤1
在项目启动类上添加 @EnableScheduling
注解,开启对定时任务的支持
@SpringBootApplication
@EnableScheduling
public class Test01Application {
public static void main(String[] args) {
SpringApplication.run(Test01Application.class, args);
}
}
@EnableScheduling注解的作用是发现注解@Scheduled的任务并后台执行。
2.2. 步骤2
编写定时任务类和方法,定时任务类通过 Spring IOC 加载,使用 @Component 注解,定时方法使用 @Scheduled 注解。
@Component
public class MySchedule {
@Scheduled()
public void schedule1() {
}
}
@Scheduled()注解中,可以使用的方法很多:
String CRON_DISABLED = "-";
String cron() default "";
String zone() default "";
long fixedDelay() default -1L;
String fixedDelayString() default "";
long fixedRate() default -1L;
String fixedRateString() default "";
long initialDelay() default -1L;
String initialDelayString() default "";
比如:fixedRate 是 long 类型,表示任务执行的间隔毫秒数,以上代码中的定时任务每 3 秒执行一次。
@Component
public class MySchedule {
@Scheduled(fixedRate = 3000)
public void schedule1() {
System.out.println("Time:" + LocalDateTime.now());
}
}
3. Cron表达式
当然,更灵活的是 @Scheduled()可以使用cron表达式!
在线生成地址:https://cron.qqe2.com/
常见cron表达式:
- 0 0 2 1 * ? * :表示在每月 1 日的凌晨 2 点执行
- 0 15 10 ? * MON-FRI :表示周一到周五每天上午 10:15 执行
- 0 15 10 ? 6L 2019-2020 :表示 2019-2020 年的每个月的最后一个星期五上午 10:15 执行
- 0 0 10,14,16 * * ? :每天上午 10 点,下午 2 点,4 点执行
- 0 0/30 9-17 * * ? :朝九晚五工作时间内每半小时执行
- 0 0 12 ? * WED :表示每个星期三中午 12 点执行
- 0 0 12 * * ? :每天中午 12点执行
- 0 15 10 ? * * :每天上午 10:15 执行
- 0 15 10 * * ? :每天上午 10:15 执行
- 0 15 10 * * ? * :每天上午 10:15 执行
- 0 15 10 * * ? 2019 :2019 年的每天上午 10:15 执行
本节阅读完毕!
(分享)