Spring Task详解

文章目录

  • 一、开启定时任务
  • 二、cron表达式

Spring Task是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑

一、开启定时任务

Spring Boot 默认在无任何第三方依赖的情况下使用 spring-context 模块下提供的定时任务工具 Spring Task。我们只需要使用 @EnableScheduling 注解就可以开启相关的定时任务功能。

@SpringBootApplication
@EnableScheduling // 开启基于注解的定时任务,发现注解@Scheduled的任务并由后台执行
public class SpringbootSpringtaskApplication {public static void main(String[] args) {SpringApplication.run(SpringbootSpringtaskApplication.class, args);}
}

当要创建一个定时任务时,@Scheduled可以直接注解在无返回值无参数方法上,表示该方法根据注解的规则定时执行。
@Scheduled注解主要支持三种方式:
以下参数cron/fixedDelay/fixedRate三个属性必须且只能出现一个

  • cron方式:@Scheduled(cron = "0 0 2 * * ? ")
  • 固定速率:@Scheduled(initialDelay = 5000, fixedDelay = 2000),单位毫秒
  • 固定延时:@Scheduled(initialDelay = 5000, fixedRate = 2000),单位毫秒

@Scheduled注解支持的部分配置参数:

  • cron:cron表达式,指定任务在特定时间执行
  • fixedDelay:表示 上一次任务执行完成后多久再次执行,参数类型:long,单位:ms
  • fixedDelayString:和fixedDelay含义一样,只是参数类型变成String
  • fixedRate:表示按一定的频率执行任务,参数类型:long,单位:ms
  • fixedRateString:与fixedRate的含义一样,只是参数类型变成String
  • initialDelay:表示延迟多久再第一次执行任务,参数类型:long,单位:ms
  • initialDelayString:与initialDelay含义一样,只是参数类型变成String
  • zone :时区,默认为当前时区,一般不用

二、cron表达式

cron表达式其实就是一个字符串,通过cron表达式可以定义任务触发的时间
构造规则:分为6个或7个域,由空格分开,每个域代表一个含义(秒、分钟、小时、日、月、周、年(可选))可以通过在线Cron表达式生成器快速生成

通配符说明:

  1. * 表示所有值. 例如:在分的字段上设置 “*”,表示每一分钟都会触发。
  2. ? 表示不指定值。使用的场景为不需要关心当前设置这个字段的值。例如:要在每月的10号触发一个操作,但不关心是周几,所以需要周位置的那个字段设置为"?" 具体设置为 0 0 0 10 * ?
  3. - 表示区间。例如 在小时上设置 “10-12”,表示 10,11,12点都会触发。
  4. , 表示指定多个值,例如在周字段上设置 “MON,WED,FRI” 表示周一,周三和周五触发
  5. / 用于递增触发。如在秒上面设置"5/15" 表示从5秒开始,每增15秒触发(5,20,35,50)。在月字段上设置’1/3’所示每月1号开始,每隔三天触发一次。
  6. L 表示最后的意思。在日字段设置上,表示当月的最后一天(依据当前月份,如果是二月还会依据是否是润年[leap]), 在周字段上表示星期六,相当于"7"或"SAT"。如果在"L"前加上数字,则表示该数据的最后一个。例如在周字段上设置"6L"这样的格式,则表示“本月最后一个星期五"
  7. W 表示离指定日期的最近那个工作日(周一至周五). 例如在日字段上设置"15W",表示离每月15号最近的那个工作日触发。如果15号正好是周六,则找最近的周五(14号)触发, 如果15号是周未,则找最近的下周一(16号)触发.如果15号正好在工作日(周一至周五),则就在该天触发。如果指定格式为 “1W”,它则表示每月1号往后最近的工作日触发。如果1号正是周六,则将在3号下周一触发。(注,“W"前只能设置具体的数字,不允许区间”-").
  8. #序号(表示每月的第几个周几),例如在周字段上设置"6#3"表示在每月的第三个周六.注意如果指定"#5",正好第五周没有周六,则不会触发该配置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/876274.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

帕金森病(PD)诊断:三种基于语音的深度学习方法

帕金森病(Parkinson’s disease, PD)是世界上第二大流行的神经退行性疾病,全球影响着超过1000万人,仅次于阿尔茨海默症。人们通常在65岁左右被诊断出患有此病。PD的一些症状包括震颤、肌肉僵硬和运动迟缓。这些症状往往出现在较晚…

MySQL之视图和索引实战

1.新建数据库 mysql> create database myudb5_indexstu; Query OK, 1 row affected (0.01 sec) mysql> use myudb5_indexstu; Database changed 2.新建表 1.学生表student,定义主键,姓名不能重名,性别只能输入男或女,所在…

Linux-Centos-改密码(单用户登陆)

笔记一: centos7单用户修改root密码 在CentOS 7中,如果您是唯一的用户或者您确信其他用户不会登录,您可以按照以下步骤来修改root密码: 1.重启系统。 2.启动时出现引导界面时,按任意键进入GRUB菜单。 3.选择要启动的内…

在线教育数仓项目(数据采集部分1)

文章目录 数据仓库概念项目需求及架构设计项目需求分析系统数据流程设计框架版本选型集群规模估算集群资源规划设计 数据生成模块目标数据页面事件曝光启动播放错误 数据埋点主流埋点方式(了解)埋点数据上报时机埋点数据日志结构 服务器和JDK准备服务器准…

缝缝补补的生活

工作之后荒废了生活,工作成了主旋律,没有兴趣、没有爱好、没有增长知识、没有丰富阅历浑浑噩噩的度过了工作后的近几年时间。有志之人立长志无志之人常立志,经常说重新开始,从头来过但是我们的生活从出生就是一直向前的&#xff0…

白鲸开源CEO郭炜荣获「2024中国数智化转型升级先锋人物」称号

2024年7月24日,由数据猿主办,IDC协办,新华社中国经济信息社、上海大数据联盟、上海市数商协会、上海超级计算中心作为支持单位,举办“数智新质力拓未来 2024企业数智化转型升级发展论坛——暨AI大模型趋势论坛”数据猿“年中特别策…

c语言(7.27)

今天学习了利用索引遍历第二种格式的二维数组 #include<stdio.h> int main() {//定义三个一维数组int arr1[3] { 1,2,3 };int arr2[5] { 1,2,3,4,5 };int arr3[9] { 1,2,3,4,5,6,7,8,9 };//分别算出每个一维数组的长度int len1 sizeof(arr1) / sizeof(int);int len2 …

探索 Electron:构建用户友好的登录页面流程

Electron是一个开源的桌面应用程序开发框架&#xff0c;它允许开发者使用Web技术&#xff08;如 HTML、CSS 和 JavaScript&#xff09;构建跨平台的桌面应用程序&#xff0c;它的出现极大地简化了桌面应用程序的开发流程&#xff0c;让更多的开发者能够利用已有的 Web 开发技能…

指针的面试题

这里写目录标题 判断链表中是否有环描述代码检测链表中是否存在环链表中存在环想检测链表中是否存在环&#xff0c;而不需要找到环的入口 判断链表中是否有环 题目 描述 判断给定的链表中是否有环。如果有环则返回true&#xff0c;否则返回false。 数据范围&#xff1a;链表…

精准制导:选择适合的Memcached缓存策略

&#x1f3af; 精准制导&#xff1a;选择适合的Memcached缓存策略 Memcached是一个广泛使用的高性能分布式内存缓存系统&#xff0c;它的缓存策略对于优化应用性能至关重要。正确的缓存策略可以显著减少数据库访问次数&#xff0c;降低延迟&#xff0c;提高响应速度。本文将深…

Spring Boot集成canal快速入门demo

1.什么是canal&#xff1f; canal 是阿里开源的一款 MySQL 数据库增量日志解析工具&#xff0c;提供增量数据订阅和消费。 工作原理 MySQL主备复制原理 MySQL master 将数据变更写入二进制日志&#xff08;binary log&#xff09;, 日志中的记录叫做二进制日志事件&#xff…

二叉树_堆(下卷)

前言 接前面两篇的内容&#xff0c;接着往下讲二叉树_堆相关的内容。 正文 那么&#xff0c;回到冒泡排序与堆排序的比较。 我们知道冒泡排序的时间复杂度为 O ( N 2 ) O(N^2) O(N2)&#xff0c;这个效率是不太好的。 那么&#xff0c;我们的堆排序的时间复杂度如何呢&…

017、Vue动态tag标签

文章目录 1、先看效果2、代码 1、先看效果 2、代码 <template><div class "tags"><el-tag size"medium"closable v-for"item,index in tags":key"item.path":effect"item.title$route.name?dark:plain"cl…

特征工程的自动化革新:Mojo模型中的动态应用策略

特征工程的自动化革新&#xff1a;Mojo模型中的动态应用策略 在机器学习领域&#xff0c;特征工程是提升模型性能的黄金钥匙。Mojo模型&#xff0c;作为一个代表任何机器学习模型的术语&#xff0c;其性能在很大程度上依赖于特征的有效性。随着数据的不断变化和业务需求的演进…

数据结构 - AVL树

文章目录 一、AVL树的介绍二、AVL树的实现1、基本框架2、查找3、插入4、删除5、测试6、总代码 三、AVL树的性能 一、AVL树的介绍 1、概念 AVL树&#xff08;Adelson-Velsky and Landis Tree&#xff09;是一种自平衡的二叉搜索树。它得名于其发明者G. M. Adelson-Velsky和E. M…

Vue 状态管理 Vue CLI

Vue 状态管理 & Vue CLI 1、状态管理2、集中状态管理2.1 Vuex2.1.1 Vuex核心概念2.1.2 Vuex Store实例2.1.3 Vuex Getter2.1.4 Vuex Mutation2.1.4 Vuex Actions2.1.4 Vuex Module 2.2 Pinia2.2.1功能增强 3、Vuex 实现原理4、Pinia 实现原理5、CLI5.1 实现 1、状态管理 将…

【CG】计算机图形学(Computer Graphics)基础(其贰)

0 学习视频 B站GAMES101-现代计算机图形学入门-闫令琪 ※ 接上文【CG】计算机图形学&#xff08;Computer Graphics&#xff09;基础&#xff08;其壹&#xff09; 7 光线追踪 7.1 为什么需要光线追踪&#xff1f; 光栅化无法妥善处理全局效果 &#xff08;软&#xff09;阴…

一天搞定React(5)——ReactRouter(下)【已完结】

Hello&#xff01;大家好&#xff0c;今天带来的是React前端JS库的学习&#xff0c;课程来自黑马的往期课程&#xff0c;具体连接地址我也没有找到&#xff0c;大家可以广搜巡查一下&#xff0c;但是总体来说&#xff0c;这套课程教学质量非常高&#xff0c;每个知识点都有一个…

excel中的时间格式通过js转化为正常时间

在JavaScript中&#xff0c;如果有一个类似44419.40592592592这样的数字&#xff0c;它通常不代表直接可用于Date对象的格式&#xff0c;因为JavaScript的Date对象期望的是从1970年1月1日UTC开始的毫秒数&#xff08;时间戳&#xff09;。 但是&#xff0c;如果知道这个数字是…

MATLAB基础:函数与函数控制语句

今天我们继续学习Matlab中函数相关知识。 API的查询和调用 help 命令是最基本的查询方法&#xff0c;可查询所有目录、指定目录、命令、函数。 我们直接点击帮助菜单即可查询所需的API函数。 lookfor 关键字用于搜索相关的命令和函数。 如&#xff0c;我们输入lookfor inpu…