Spring Task 定时任务

Spring Task

        Spring Task是Spring框架提供的轻量级定时任务调度模块,通过简单的注解和配置即可实现任务调度。

1. 核心功能

  1. 定时任务:按固定频率(fixedRate)、固定间隔(fixedDelay)、或自定义时间规则(Cron表达式)执行任务。
  2. 异步任务:结合@Async注解实现异步任务执行。
  3. 动态调整: 支持运行时动态修改任务规则。

2. 基本使用

2.1 启用定时任务支持

        在Spring Boot启动类或配置类上添加@EnableScheduling注解:

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

2.2 定义定时任务

        在Bean的方法上使用@Scheduled注解,指定执行策略。

@Service
public class MyTaskService {
    // 固定速率(每隔5秒执行一次,不考虑任务执行时间)
    @Scheduled(fixedRate = 5000)
    public void taskWithFixedRate() {
        // 逻辑代码
    }

    // 固定延迟(任务结束后等待3秒再执行下一次)
    @Scheduled(fixedDelay = 3000)
    public void taskWithFixedDelay() {
        // 逻辑代码
    }

    // Cron表达式(每天12点执行)
    @Scheduled(cron = "0 0 12 * * ?")
    public void taskWithCron() {
        // 逻辑代码
    }
}

@Scheduled参数详解

参数 说明
fixedRate 固定频率(单位:毫秒),无论前一次任务是否完成,按固定时间间隔执行
fixedDelay 固定间隔(单位:毫秒),前一次任务结束后,延迟指定时间再执行
cron 使用 Cron 表达式定义复杂时间规则(如 0 0 12 * * ? 表示每天中午 12 点执行)
zone 指定 Cron 表达式的时区(默认系统时区)。
initialDelay 首次任务延迟执行时间(单位:毫秒)。

Cron表达式

Cron 表达式由 6~7 个字段组成,格式为:秒 分 时 日 月 周 年(可选)示例

  • 0 0 10 * * ?:每天 10:00 执行。
  • 0 0/5 14 * * ?:每天 14:00 至 14:55,每隔 5 分钟执行。
  • 0 15 10 ? * MON-FRI:每周一至周五 10:15 执行。

你可能感兴趣的:(spring,java,前端)