当前位置: 首页 > 图灵资讯 > 技术篇> Spring Boot 定时任务调度实战

Spring Boot 定时任务调度实战

来源:图灵教育
时间:2023-06-02 09:27:54

在项目开发中,经常需要执行一些定期任务,如 上个月的数据分析报告需要每月1日凌晨汇总; 每天早上分析前一天的日志信息和其他定期操作。Spring 定期任务调度的异步执行为我们提供了一种方式。

使用注释:

@EnableScheduling 基于注释的定时任务在启动类上打开@Scheduled 标识的方法会定期处理

需要通过 cron 属性来指定 cron 表达式: 秒 分 时 日 月 星期几

@Service   public class ScheduledService {          private static int count = 1;          /**       *       秒  分  时  日  月  星期几       * 比如: "0   *  *   *   *  MON-FRI" 从周一到周五, 每次0秒执行(即每分钟执行一次)       */       @Scheduled(cron = "1-10 * * * * *")       public void dataCount() {           System.out.println(“数据统计第” + count++ + "次");       }   }

cron表达式

Spring Boot 定时任务调度实战_定时任务

Spring Boot 定时任务调度实战_定时任务_02

cron表达式在线生成 http://cron.qqe2.com/案例如下:

1-5 * * * * 1到5秒,每秒触发任务 */5 * * * * 每5秒执行一次 0 */1 * * * 每隔一分钟执行一次 0 0/1 * * * ? 0 0 5-15 * * 每天5-15点触发 0 0-5 14 * * 每天下午2点到下午2点:05期间的每1分钟触发 0 0/5 14 * * 每天下午2点到下午2点:每5分钟触发55期间的触发 0 0/5 14,18 * * 每天下午2点到2点:从下午6:00到6:55期间:每5分钟触发55期间的触发 0 0/30 9-17 * * 朝九晚五工作时间内每半小时工作一次 0 0 12 ? * WED 表示每周三中午12点 0 10,44 14 ? * WED 表示每周三中午12点 0 10,44 14 ? 3 WED 每年3月的星期三下午2:10和2:44触发 0 0 23 L * ? 每月最后一天23:00执行一次 0 15 10 LW * ? 每月最后一个工作日10:15:00触发任务 0 15 10 ? * 5#3 每月第三周星期五10点15分0秒触发任务