Spring Task
Spring Task是Spring框架提供的轻量级定时任务调度模块,通过简单的注解和配置即可实现任务调度。
1. 核心功能
- **定时任务:**按固定频率(fixedRate)、固定间隔(fixedDelay)、或自定义时间规则(Cron表达式)执行任务。
- **异步任务:**结合@Async注解实现异步任务执行。
- 动态调整: 支持运行时动态修改任务规则。
2. 基本使用
2.1 启用定时任务支持
在Spring Boot启动类或配置类上添加**@EnableScheduling**注解:
java
@SpringBootApplication
@EnableScheduling
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
2.2 定义定时任务
在Bean的方法上使用**@Scheduled**注解,指定执行策略。
java
@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 执行。