Spring定时任务(Cron表达式)

定时任务

在线Cron表达式生成器: https://cron.qqe2.com/

一、SpringBoot自带的定时任务

解决:使用异步任务 + 定时任务来完成定时任务不阻塞的功能

  • 定时任务

    • 1、@EnableScheduling 开启定时任务 (可直接加在springboot启动类上)
    • 2、@Scheduled开启一个定时任务 (可直接加在需要定时任务的方法上,这个方法必须是注入容器中)
  • 异步任务

    • 1、@EnableAsync:开启异步任务 (可直接加在springboot启动类上)
    • 2、@Async:给希望异步执行的方法标注(可直接加在需要定时任务的方法上,这个方法必须是注入容器中)
  • cron表达式特点

    • 1、在Spring中表达式是6位组成,不允许第七位的年份
    • 2、在周几的的位置,1-7代表周一到周日
  • 特殊字符(,-*/LW#)

    • ,:枚举

      (cron=“7,9,23 * * * * ?”):任意时刻的 7,9,23 秒启动这个任务;

    • -:范围

      (cron=“7-20 * * * * ?”):任意时刻的 7-20 秒之间,每秒启动一次

    • *:任意

      指定位置的任意时刻都可以

    • /:步长

      (cron=“7/5 * * * * ?”):第 7 秒启动,每 5 秒一次;

      (cron="*/5 * * * * ?"):任意秒启动,每 5 秒一次;

    • ?:(出现在日和周几的位置):为了防止日和周冲突,在周和日上如果要写通配符使用?

      (cron="* * * 1 * ?"):每月的 1 号,启动这个任务;

    • L:(出现在日和周的位置), last:最后一个

      (cron="* * * ? * 3L"):每月的最后一个周二

    • W:Work Day:工作日

      (cron="* * * W * ?"):每个月的工作日触发

      (cron="* * * LW * ?"):每个月的最后一个工作日触发

    • #:第几个

      (cron="* * * ? * 5#2"):每个月的第 2 个周 4

  • 代码示例

    • 定时任务配置类

      import org.springframework.context.annotation.Configuration;
      import org.springframework.scheduling.annotation.EnableAsync;
      import org.springframework.scheduling.annotation.EnableScheduling;
      
      @EnableAsync      //开启异步任务
      @EnableScheduling //开启定时任务 
      @Configuration
      public class ScheduledConfig {
      
      }
      
      
    • 业务执行带代码

      import org.springframework.scheduling.annotation.Scheduled;
      import org.springframework.stereotype.Service;
      
      @Service
      public class SeckillScheduled {
      
          // @Scheduled(cron = "*/5 * * * * ? ")
          @Scheduled(cron = "0 0 1/1 * * ? ")
          public void uploadSeckillSkuLatest3Days() {
             //调用service层方法 定时执行业务代码
          }
      }
      
      

二、SpringBoot集成Quartz

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

华婷深深

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值