//小人

Spring Schedule定时任务看这一篇就够了

Spring Schedule 是指Spring框架提供的定时任务调度功能。Spring Schedule允许开发者在应用程序中便捷地创建和管理定时任务,比如按固定频率执行某些操作,或者按照cron表达式设定复杂的调度规则。

Spring Schedule 功能的依赖直接或间接地包含在 spring-boot-starter 家族中的相关起步依赖模块中,特别是对于定时任务的支持,Spring Boot 默认并未在基础的 spring-boot-starter 中直接提供,而是包含在 spring-boot-starter-web 或者 spring-boot-starter-data-jpa 等起步依赖中并不是必需的。然而,为了支持定时任务,你需要引入 spring-boot-starter-quartz(如果打算使用Quartz作为定时任务调度器)或者只需要 spring-boot-starter 和 spring-boot-starter-data-solr(内含对Scheduled任务的支持)。

SpringBoot使用Spring Schedule不用额外的引入其他依赖只要有依赖就可以了

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>

Spring Schedule核心概念与使用

1. Cron表达式

Cron表达式是用于配置定时任务执行时间的一种格式,它通常包含以下七个字段(部分字段非必填):

秒(Seconds)

分钟(Minutes)

小时(Hours)

月份中的日期(Day-of-Month)

月份(Month)

星期中的哪一天(Day-of-Week)

年份(Year)(这个字段在大部分场景下是可选的,Spring Schedule默认不使用)

示例:0 0 0 * * MON-FRI 表示每周一到周五的每天凌晨0点执行。

Cron表达式在线工具:https://www.pppet.net/

2. 使用@EnableScheduling

要在Spring Boot应用中启用定时任务调度功能,需要在某个配置类或@SpringBootApplication标记的启动类上添加@EnableScheduling注解,这样Spring容器就会启动一个后台调度器来检测并执行带有@Scheduled注解的方法。

@SpringBootApplication
@EnableScheduling
public class Application {
    public static void main(String[] args){
        SpringApplication.run(Application.class,args);
    }
}

3. @Scheduled注解

@Scheduled 注解用于标记需要被调度执行的方法,它可以有多个属性来指定调度策略,如cron表达式、fixedDelay(两次执行之间的间隔时间)或fixedRate(两次执行开始之间的间隔时间)等。

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class MyTask {

    @Scheduled(cron = "0 0/15 * * * ?")
    public void executeEveryQuarterHour() {
        // 每15分钟执行一次的方法体
    }
}

4. 调度器实现

Spring Schedule背后支持多种任务调度方案,如JDK Timer、concurrent包下的ScheduledExecutorService以及Quartz等。Spring通过封装这些底层实现,为开发者提供了统一的接口和配置方式来处理定时任务。

 

 

 

 

posted @ 2024-03-15 08:38  H_Q  阅读(154)  评论(0编辑  收藏  举报