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 执行。
相关推荐
paopaokaka_luck19 分钟前
基于SpringBoot+Uniapp的健身饮食小程序(协同过滤算法、地图组件)
前端·javascript·vue.js·spring boot·后端·小程序·uni-app
患得患失9491 小时前
【前端】【vscode】【.vscode/settings.json】为单个项目配置自动格式化和开发环境
前端·vscode·json
飛_1 小时前
解决VSCode无法加载Json架构问题
java·服务器·前端
YGY Webgis糕手之路3 小时前
OpenLayers 综合案例-轨迹回放
前端·经验分享·笔记·vue·web
木棉软糖3 小时前
一个MySQL的数据表最多能够存多少的数据?
java
90后的晨仔4 小时前
🚨XSS 攻击全解:什么是跨站脚本攻击?前端如何防御?
前端·vue.js
Ares-Wang4 小时前
JavaScript》》JS》 Var、Let、Const 大总结
开发语言·前端·javascript
90后的晨仔4 小时前
Vue 模板语法完全指南:从插值表达式到动态指令,彻底搞懂 Vue 模板语言
前端·vue.js
程序视点4 小时前
Java BigDecimal详解:小数精确计算、使用方法与常见问题解决方案
java·后端
愿你天黑有灯下雨有伞4 小时前
Spring Boot SSE实战:SseEmitter实现多客户端事件广播与心跳保活
java·spring boot·spring