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 执行。
相关推荐
AC赳赳老秦1 分钟前
投标合规提效:用 OpenClaw 实现标书 / 合同自动审核、关键词校验、格式优化,降低废标风险
开发语言·前端·python·eclipse·emacs·deepseek·openclaw
kyriewen8 分钟前
代码写成一锅粥?3个设计模式让你的项目“起死回生”
前端·javascript·设计模式
phltxy31 分钟前
Spring Cloud 分布式服务部署实战:从 0 到 1 实现微服务上线
spring·spring cloud·微服务
千寻girling38 分钟前
《 Git 详细教程 》
前端·后端·面试
wbs_scy41 分钟前
Linux线程同步与互斥(三):线程同步深度解析之POSIX 信号量与环形队列生产者消费者模型,从原理到源码彻底吃透
java·开发语言
之歆2 小时前
DAY08_CSS浮动与行内块布局实战指南(下)
前端·css
yqcoder2 小时前
CSS Position 全解析:5 种定位模式详解
前端·css
jinanwuhuaguo2 小时前
(第三十三篇)五月的文明奠基:OpenClaw 2026.5.2版本的文明级解读
android·java·开发语言·人工智能·github·拓扑学·openclaw
Rhi6373 小时前
从零搭建项目:React 19 + Vite 8 + Tailwind CSS v4 实战配置
前端
xmjd msup3 小时前
spring security 超详细使用教程(接入springboot、前后端分离)
java·spring boot·spring