Spring Task 定时任务

Spring Task

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

1. 核心功能

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

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 执行。
相关推荐
寻星探路10 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
崔庆才丨静觅12 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
曹牧12 小时前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言
passerby606112 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了13 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅13 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅13 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
爬山算法13 小时前
Hibernate(90)如何在故障注入测试中使用Hibernate?
java·后端·hibernate
kfyty72513 小时前
集成 spring-ai 2.x 实践中遇到的一些问题及解决方案
java·人工智能·spring-ai