SpringBoot 中定时执行注解(@Scheduled、@EnableScheduling)

2023-11-15

项目开发中经常需要执行一些定时任务,比如需要在每天凌晨时候,分析一次前一天的日志信息。Spring为我们提供了异步执行任务调度的方式,提供TaskExecutor 、TaskScheduler 接口。

SpringBoot中使用两个注解:@EnableScheduling、@Scheduled来简单实现定时任务。

@Scheduled参数详解

1. cron

该参数接收一个cron表达式cron表达式是一个字符串,字符串以5或6个空格隔开,分开共6或7个域,每一个域代表一个含义。

cron表达式语法
[秒] [分] [小时] [日] [月] [周] [年]

注:[年]不是必须的域,可以省略[年],则一共6个域

序号 说明 必填 允许填写的值 允许的通配符
1 0-59 , - * /
2 0-59 , - * /
3 0-23 , - * /
4 1-31 , - * ? / L W
5 1-12 / JAN-DEC , - * /
6 1-7 or SUN-SAT , - * ? / L #
7 1970-2099 , - * /
通配符说明:
  • * 表示所有值。 例如:在分的字段上设置 *,表示每一分钟都会触发。
  • ? 表示不指定值。使用的场景为不需要关心当前设置这个字段的值。例如:要在每月的10号触发一个操作,但不关心是周几,所以需要周位置的那个字段设置为”?” 具体设置为 0 0 0 10 * ?
  • - 表示区间。例如 在小时上设置 “10-12”,表示 10,11,12点都会触发。
  • , 表示指定多个值,例如在周字段上设置 “MON,WED,FRI” 表示周一,周三和周五触发
  • / 用于递增触发。如在秒上面设置”5/15” 表示从5秒开始,每增15秒触发(5,20,35,50)。 在月字段上设置’1/3’所示每月1号开始,每隔三天触发一次。
  • L 表示最后的意思。在日字段设置上,表示当月的最后一天(依据当前月份,如果是二月还会依据是否是润年[leap]), 在周字段上表示星期六,相当于”7”或”SAT”。如果在”L”前加上数字,则表示该数据的最后一个。例如在周字段上设置”6L”这样的格式,则表示“本月最后一个星期五”
  • W 表示离指定日期的最近那个工作日(周一至周五). 例如在日字段上置”15W”,表示离每月15号最近的那个工作日触发。如果15号正好是周六,则找最近的周五(14号)触发, 如果15号是周未,则找最近的下周一(16号)触发.如果15号正好在工作日(周一至周五),则就在该天触发。如果指定格式为 “1W”,它则表示每月1号往后最近的工作日触发。如果1号正是周六,则将在3号下周一触发。(注,”W”前只能设置具体的数字,不允许区间”-“)。
  • # 序号(表示每月的第几个周几),例如在周字段上设置”6#3”表示在每月的第三个周六.注意如果指定”#5”,正好第五周没有周六,则不会触发该配置(用在母亲节和父亲节再合适不过了) ;小提示:’L’和 ‘W’可以一组合使用。如果在日字段上设置”LW”,则表示在本月的最后一个工作日触发;周字段的设置,若使用英文字母是不区分大小写的,即MON与mon相同。
示例

每隔5秒执行一次:*/5 * * * * ?

每隔1分钟执行一次:0 */1 * * * ?

每天23点执行一次:0 0 23 * * ?

每天凌晨1点执行一次:0 0 1 * * ?

每月1号凌晨1点执行一次

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringBoot 中定时执行注解(@Scheduled、@EnableScheduling) 的相关文章

随机推荐

  • Java实现标题相似度计算,文本内容相似度匹配,Java通过SimHash计算标题文本内容相似度

    目录 一 前言 二 关于SimHash 补充知识 一 什么是海明距离 二 海明距离的应用 三 什么是编辑距离 三 SimHash算法的几何意义和原理 一 SimHash算法的几何意义 二 SimHash的计算原理 三 文本的相似度计算 四
  • Linux添加组播

    sudo route add net 224 1 1 0 netmask 255 255 255 0 dev ens33 转载于 https www cnblogs com tiandsp p 10985838 html
  • 鲁棒优化(4):通过yalmip中的kkt命令实现CCG两阶段鲁棒优化

    两阶段鲁棒优化的原理推导部分 已经较多的文章进行分析 目前大部分同学面临的问题是 子问题模型中存在的双线性项该如何处理 目前 主流方式是 采用对偶定理或KKT条件 将第二阶段的双层问题变成单层问题 简略的思想如下 首先是原始的两阶段模型 对
  • c++中std::condition_variable最全用法归纳

    前言 建议阅读以下文章前需先对建立 std thread 多线程与std mutex 锁有一定程度的熟悉 std thread最全用法归纳 std mutex最全用法归纳 概括 使用 std condition variable 的 wai
  • 【代码分析】TensorRT sampleMNIST 详解

    目录 前言 代码分析 Main入口 网络构建 build 阶段 网络推理 infer 阶段 释放资源 前言 TensorRT 的 hello world 程序sampleMNIST是众多TensorRT初学者很好的起点 本文旨在详细分析sa
  • 使用PHP来简单的创建一个RPC服务

    RPC全称为Remote Procedure Call 翻译过来为 远程过程调用 主要应用于不同的系统之间的远程通信和相互调用 比如有两个系统 一个是PHP写的 一个是JAVA写的 而PHP想要调用JAVA中的某个类的某个方法 这时候就需要
  • VScode tab缩进太小 空格长度太小问题(Ubuntu)

    一 问题描述 Ubuntu18 04 安装vscode后 发现tab的缩进太小 初以为是tab的空格数没设置对 经确认后 没问题 一个tab是四个空格 下面两图分别是异常和正常的缩进显示 二 原因分析 在我的另一台虚拟机 ubuntu16
  • Google App Engine对Java支持情况一览

    Google App Engine对Java支持情况一览 http developer 51cto com 2009 04 09 11 06 杨赛 译 51CTO com 我要评论 0 Google App Engine的Java支持已发布
  • 华为OD机试-快递运输

    Online C compiler to run C program online include
  • Java程序的三种流程结构

    1 顺序结构 按照顺序一句一句执行 Java的基本结构就是顺序结构 2 循环结构 在顺序结构的基础下 重复执行相同或者相似的代码 for while do while 3分支结构 有条件的去执行某个语句 条件满足就执行下面的语句 条件不满足
  • SQL注入攻击流程

    1 判断SQL注入点 本质原理是 找一个需要后台处理后提交给数据库的点 所有的输入只要和数据库进行交互的 都有可能触发SQL注入 一般为三大类 Get参数触发SQL注入 POST参数触发SQL注入 Cookie触发SQL注入 而验证是否存在
  • 华为手机打开图片很慢是怎么回事_华为手机相册打开很慢怎么解决?

    造成卡顿的原因 相册里存储信息较多 由于手机读取相册中的信息需要一定时间 可能出现卡顿现象 系统卡顿通用解决办法 请保持手机电量高于 20 手机低电量时为了延长待机时间 保护手机 会对手机的性能进行限制 卸载第三方手机管家类软件 如果您的手
  • 【Python】首届一年一度秀代码时间罒ω罒

    声明 以下代码大家如果有兴趣的话可以用LDLE代码编辑器运行看看 NO 1 万能计算器 难度系数 1 算术运算符 a input 请输入第一个数字 b input 请输入第二个数字 a float a b float b print 和 a
  • 小韭菜

    大家好 我是章鱼猫 今天给大家推荐的这个项目是 leeks 原名小韭菜 后改名为 leeks 这是一个 IDEA 查看股票 基金插件 写代码的同时还能瞄一眼股票 基金 真的是工作 搞基两不误 安装 下载当前最新的安装包 leeks 1 3
  • 解决 linux在 VMware中的问题 汇总 (***)

    目录 解决Ubuntu在VMware中不能全屏的问题 无需安装 VMware tools 解决虚拟机与宿主机的文件共享问题 Ubuntu Window下 X2Go 安装 连接 同步 上传文件夹 复制 粘贴 桌面共享 Linux挂载共享文件夹
  • 命令行中Gradle创建项目的打包和运行,新手起步

    第一步 下载 下载 https gradle org 官网 gt install gt releases page gt binary only 下载 下载页 https gradle org releases close notifica
  • vue中在字符串中添加点击事件

    如果你在用vue写项目中遇到了需要在字符串中写点击事件的奇葩写法 你会不会感到很头疼 我不知道你会不会 反正我肯定会 没办法谁叫咋遇到了呢 话不多说 直接上代码 html div class ml 12 mr 12 mt 8 div 采用的
  • 华为OD机试 - 可以组成网络的服务器(Java)

    题目描述 在一个机房中 服务器的位置标识在 n m 的整数矩阵网格中 1 表示单元格上有服务器 0 表示没有 如果两台服务器位于同一行或者同一列中紧邻的位置 则认为它们之间可以组成一个局域网 请你统计机房中最大的局域网包含的服务器个数 输入
  • Docker-compose安装及使用教程

    docker compose安装 方法一 首先执行pip V确认是否已安装pip 若提示 未找到命令 则根据以下步骤执行 若显示pip版本则直接执行步骤2安装即可 1 安装pip wget https bootstrap pypa io g
  • SpringBoot 中定时执行注解(@Scheduled、@EnableScheduling)

    项目开发中经常需要执行一些定时任务 比如需要在每天凌晨时候 分析一次前一天的日志信息 Spring为我们提供了异步执行任务调度的方式 提供TaskExecutor TaskScheduler 接口 SpringBoot中使用两个注解 Ena