spring task Apache poi WebSocket

张开发
2026/5/18 12:09:18 15 分钟阅读
spring task  Apache poi  WebSocket
一、Spring Task 定时任务1. 是什么(核心本质)Spring 3.0+ 内置的轻量级任务调度框架,底层基于 JDKScheduledExecutorService线程池实现,通过注解驱动,无需任何第三方依赖。核心:@Scheduled注解 + Spring 容器的任务注册与调度定位:适合单机、简单、低并发的定时任务;复杂分布式调度请用 XXL-Job/Quartz2. 为什么用它零依赖:Spring Boot 项目开箱即用,一行注解开启低侵入:业务代码与调度逻辑完全分离足够用:覆盖 90% 以上的后端定时任务场景(数据统计、报表生成、缓存刷新、定时清理)3. 核心:Cron 表达式(从入门到精通,再也不用复制粘贴)3.1 Spring Cron 语法结构(6 个字段,和 Linux Cron 不一样!)⚠️重要区别:Linux Cron 是 5 个字段(没有秒),Spring Cron 是6 个字段,顺序固定:plaintext秒 分 时 日 月 周 0 0 12 * * ?第 7 个字段是年(可选,几乎不用),所以完整格式是:秒 分 时 日 月 周 年3.2 每个字段的取值范围表格字段允许值允许的特殊字符秒0-59, - * /分0-59, - * /时0-23, - * /日1-31, - * / ? L W月1-12 或 JAN-DEC, - * /周1-7 或 SUN-SAT(1 = 周日,7 = 周六), - * / ? L #年(可选)1970-2099, - * /3.3 所有特殊字符的精确含义表格字符含义示例*匹配该字段的所有值* * * * * ?= 每秒执行一次?无指定值,只能用在日和周字段解决日和周的冲突(核心!下面单独讲),枚举多个值0 0 8,12,18 * * ?= 每天 8、12、18 点整执行-范围0 0 9-17 * * ?= 每天 9 点到 17 点,每小时执行一次/步长0/5 * * * * ?= 每 5 秒执行一次0 0/30 9-18 * * ?= 9-18 点每 30 分钟执行一次L最后一个,只能用在日和周字段0 0 23 L * ?= 每月最后一天 23 点执行0 0 23 ? * 6L= 每月最后一个周五 23 点执行(6 = 周五)W最近的工作日,只能用在日字段0 0 10 15W * ?= 每月 15 号最近的工作日 10 点执行(如果 15 号是周六,就 14 号周五执行;如果是周日,就 16 号周一执行)#第几个星期几,只能用在周字段0 0 10 ? * 2#3= 每月第 3 个周一 10 点执行(2 = 周一)3.4?的作用和日 / 周冲突❌ 错误写法:0 0 12 1 * 1(每月 1 号且每周一执行)✅ 正确写法:0 0 12 1 * ?(每月 1 号执行) 或0 0 12 ? * 1(每周一执行)原理:日和周是互斥的,不能同时指定具体值。如果指定了日,周就必须写?;如果指定了周,日就必须写?。我要 "每月 1 号执行":日 = 1,周 =?我要 "每周一执行":日 =?,周 = 1我要 "每天执行":日 =*,周 =?3.5 生产环境常用 Cron 表达式表格需求Cron 表达式每天凌晨 2 点执行0 0 2 * * ?每天凌晨 2 点 30 分执行0 30 2 * * ?每天 9 点到 18 点每小时执行一次0 0 9-18 * * ?每天

更多文章