首页 专题 文章 代码 归档
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 执行
本节阅读完毕! (分享
二维码图片 扫描关注我们哟