一、简介
Spring Task 是指 Spring 框架中用于执行定时任务的功能。通过 Spring Task,开发者可以方便地在应用程序中设置定时任务,例如在特定的时间间隔执行某个方法,或者在特定的时间点执行某个任务。
二、cron表达式
Cron 表达式是一种用来表示时间规则的字符串格式,通常用于设置定时任务的执行时间。它由 6 或 7 个字段组成,每个字段表示一个时间单位或者一个时间范围,用空格或者制表符分隔开。
六个(或七个)字段分别表示:
- 秒(0-59)
- 分钟(0-59)
- 小时(0-23)
- 日期(1-31)
- 月份(1-12 或者 JAN-DEC)
- 星期(0-6 或者 SUN-SAT)
- 年份(可选,1970-2099)
每个字段可以是一个具体的值,一个列表,一个范围,或者使用通配符。
常见的示例:
0 0 12 * * ?
:每天中午 12 点触发0 15 10 ? * *
:每天上午 10:15 触发0 0/5 * * * ?
:每隔 5 分钟触发0 0 8-10 * * ?
:每天上午 8 点到 10 点,每小时触发一次0 0/30 8-10 * * ?
:每天上午 8 点到 10 点,每 30 分钟触发一次0 0 9 ? * MON-FRI
:周一到周五上午 9 点触发
Cron 表达式提供了非常灵活的定时任务调度方式,可以精确地设置任务的执行时间。
三、案例
在 Spring 中,实现定时任务有多种方式,其中最常见的是使用 @Scheduled
注解。通过在方法上添加 @Scheduled
注解,并设置相应的定时规则,Spring 就会自动调度这个方法执行。
例如:
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class MyScheduledTasks {
@Scheduled(fixedRate = 5000) // 每隔 5 秒执行一次
public void task1() {
// 执行任务逻辑
}
@Scheduled(cron = "0 0 12 * * ?") // 每天中午 12 点执行
public void task2() {
// 执行任务逻辑
}
}
除了 @Scheduled
注解,Spring 还提供了 TaskScheduler
接口和 ThreadPoolTaskScheduler
类,用于在程序中动态地创建和管理定时任务。
Spring Task 提供了简单、灵活的定时任务功能,是开发 Spring 应用程序中常用的模块之一。
在线生成器 https://www.pppet.net/