Spring Task(定时任务)框架

news2025/4/5 19:01:21

文章目录

  • 一、Spring Task介绍
  • 二、cron表达式
    • 1.cron表达式介绍
    • 2.cron表达式在线生成器
  • 三、fixedDelay
  • 四、fixedRate
  • 五、initialDelay
  • 六、Spring Task的使用
    • 1.导入maven坐标spring-context
    • 2.启动类添加注解@EnableScheduling开启任务调度
    • 3.自定义定时任务类


一、Spring Task介绍

Spring Task 是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。
在这里插入图片描述
应用场景:

  • 信用卡每月还款提醒
  • 银行贷款每月还款提醒
  • 火车票售票系统处理未支付订单
  • 入职纪念日为用户发送通知
  • 等等…
    (只要是需要定时处理当达到场景都可以使用Spring Task)

二、cron表达式

1.cron表达式介绍

cron表达式其实就是一个字符串,通过cron表达式可以定义任务触发时间
构成规则:分成6或7个域(位置),由空格分隔开,每个域代表一个含义
每个域的含义分别为:秒、分钟、小时、日、月、周、年(可选)
举例:
在这里插入图片描述
其中日和周是两个相互对立的,当一个定义为数字后,另一个定义为 ?
在这里插入图片描述

2.cron表达式在线生成器

网址:https://cron.qqe2.com/
在这里插入图片描述
这里需要了解一些cron的相关语法规范。

特殊字符介绍:
逗号(,):指定一个值列表,例如使用在月域上1,4,5,7表示1月、4月、5月和7月

横杠(-):指定一个范围,例如在时域上3-6表示3点到6点(即3点、4点、5点、6点)

星号(*):表示这个域上包含所有合法的值。例如,在月份域上使用星号意味着每个月都会触发

斜线(/):表示递增,例如使用在秒域上0/15表示每15秒

问号(?):只能用在日和周域上,但是不能在这两个域上同时使用。表示不指定

井号(#):只能使用在周域上,用于指定月份中的第几周的哪一天,例如6#3,意思是某月的第三个周五 (6=星期五,3意味着月份中的第三周)

L:某域上允许的最后一个值。只能使用在日和周域上。当用在日域上,表示的是在月域上指定的月份的最后一天。用于周域上时,表示周的最后一天,就是星期六

W:W 字符代表着工作日 (星期一到星期五),只能用在日域上,它用来指定离指定日的最近的一个工作日

三、fixedDelay

它的间隔时间是根据上次的任务结束的时候开始计时的,只要盯紧上一次执行结束的时间即可,跟任务逻辑的执行时间无关,两个轮次的间隔距离是固定的。
在这里插入图片描述

四、fixedRate

这个相对难以理解一些。在理想情况下,下一次开始和上一次开始之间的时间间隔是一定的。但是默认情况下 Spring Boot 定时任务是单线程执行的。当下一轮的任务满足时间策略后任务就会加入队列,也就是说当本次任务开始执行时下一次任务的时间就已经确定了,由于本次任务的“超时”执行,下一次任务的等待时间就会被压缩甚至阻塞,看图就明白了。
在这里插入图片描述

五、initialDelay

初始化延迟时间,也就是第一次延迟执行的时间。这个参数对 cron 属性无效,只能配合 fixedDelay 或 fixedRate 使用。如 @Scheduled(initialDelay=5000,fixedDelay = 1000) 表示第一次延迟 5000 毫秒执行,下一次任务在上一次任务结束后 1000 毫秒后执行。

六、Spring Task的使用

1.导入maven坐标spring-context

代码如下(示例):

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
</dependency>

在这里插入图片描述

2.启动类添加注解@EnableScheduling开启任务调度

代码如下(示例):

@SpringBootApplication
@EnableTransactionManagement //开启注解方式的事务管理
@Slf4j
@EnableCaching//开启缓存注解功能
@EnableScheduling //开启任务调度
public class SkyApplication {
    public static void main(String[] args) {
        SpringApplication.run(SkyApplication.class, args);
        log.info("server started");
    }
}

该处使用的url网络请求的数据。

3.自定义定时任务类

举例代码:

/**
 * 自定义定时任务类
 */

@Component //当前类需要实例化,交给spring管理,所以加@Component
@Slf4j
public class MyTask {

    /**
     * 定时任务 每隔5秒触发一次
     */
    @Scheduled(cron = "0/5 * * * * ?") //指定任务什么时候触发
    public void executeTask(){
        log.info("定时任务开始执行:{}",new Date());
        /**
         * 定时任务的一些任务逻辑
         */
    }

}

执行结果:
在这里插入图片描述

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

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

相关文章

Realtek 5G pcie网卡 RTL8126-CG简介

总shu&#xff1a;PCIE 5G网卡方案“RTL8126-CG”采用QFN56封装&#xff0c;面积8 x 8毫米&#xff0c;非常小巧&#xff0c;提供一个RJ-45网口、两个USB 3.x接口。它走的是PCIe 3.0 x1系统通道&#xff0c;搭配超五类网线&#xff0c;可以在长达100米的距离上提供满血的5Gbps网…

Jmeter性能测试入门之常用组件

一个jmeter的脚本通常包含线程组取样器断言定时器逻辑控制器配置元件监听器 线程组部分用法介绍&#xff1a; 【普通线程组】&#xff1a; **线程数&#xff1a;**可以理解为虚拟用户数 **Ramp-Up时间(秒)&#xff1a;**运行指定线程数需要的时间 **循环次数&#xff1a;**勾…

java基础+数据库基础+系统+JVM问题

的哎的哎 1、基础部分 java线程池 队列的选择 答&#xff1a; SingleThreadPool:适用于多个任务顺序执行的场景。 它使用的是LinkedBlockingQueue<>()&#xff0c;无界的阻塞队列&#xff0c;就意味着会有内存溢出的风险。 FixedThreadPool: 适用于任务量固定耗时长的…

QDDR究竟是什么?

QDDR究竟是什么? 在当今的高科技时代&#xff0c;我们经常遇到各种各样的缩写和术语&#xff0c;其中QDDR就是其中一个。那么&#xff0c;究竟什么是QDDR呢&#xff1f; QDDR&#xff0c;全称Quad Data Rate&#xff0c;是一种同步动态随机存储器&#xff08;SDRAM&#xff09…

验证链(CoVe)降低LLM中的幻觉10.31

验证链&#xff08;CoVE&#xff09;降低LLM中的幻觉 摘要1 引言2 相关工作3 验证链&#xff08;Chain-of-Verification&#xff09;3.1 生成基准回答3.2 计划验证3.3 执行验证3.4 最终验证的回答 4 实验&#xff08;直译&#xff09;4.1 任务4.1.1 WIKIDATA4.1.2 WIKI-CATEGOR…

应用于智慧矿山的皮带跑偏视频分析AI算法

一、引言 随着科技的发展&#xff0c;人工智能技术已经在各个领域得到广泛应用。而在智慧矿山领域&#xff0c;皮带跑偏视频分析是其中一个重要的应用方向。本文将详细介绍皮带跑偏视频分析AI算法的原理&#xff0c;以期为智慧矿山的发展提供有益的参考。 二、算法原理 1. 视…

【3妹教我学历史-秦朝史】2 秦穆公-韩原之战

插&#xff1a; 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 坚持不懈&#xff0c;越努力越幸运&#xff0c;大家一起学习鸭~~~ 3妹&#xff1a;2哥&#xff0c;今天下班这么早&#…

CT MR 三维重建可视化系统

前言 本文通过研究医学可视化的不同算法&#xff0c;在 vc环境下&#xff0c;以可视化软件包VTK 为平台&#xff0c;编程设计实现了三维建模系统&#xff0c;实现了 DICOM图像的三维重建。 材料与方法 使用符合 DICOM 标准的临床 CT、MRI图像数据&#xff0c;在 vc环境下&…

高等数学公式

目录 一.高中二.高数基础三.高数第一章 空间解析几何与向量代数2.向量代数6.二次曲面 第二章 多元函数的微分学第三章 重积分一、二重积分二、 三重积分直角坐标下三重积分的计算柱面坐标下三重积分的计算球面坐标下三重积分的计算曲面面积 第四章 曲线积分与曲面积分1、对弧长…

Qt常见类名关系整理

1、QAbstractItemModel与QAbstractItemView 模型的基类: The QAbstractItemModel class provides the abstract interface for item model classes. Inherited By: QAbstractListModel&#xff0c;QAbstractProxyModel,and QAbstractTableModel 视图的基类: The QAbstractIte…

代购商城源码是否可以定制开发?

定制开发&#xff0c;符合个性需求 代购商城源码是现代电子商务中的重要工具&#xff0c;它为代购商提供了建立在线店铺、管理产品和订单、处理支付和物流等功能。然而&#xff0c;对于不同的代购商而言&#xff0c;在源码的基础上进行个性化定制开发无疑是提升竞争力和用户体验…

高效办公必备:不同路径文件一键批量移动到同一目录的技巧

在高效办公中&#xff0c;文件的批量移动和管理是一项常见的任务。有时候&#xff0c;我们需要将文件从不同的路径移动到同一个目录中&#xff0c;以便于管理和查找。手动一个一个地移动文件不仅耗时而且容易出错。因此&#xff0c;掌握一键批量移动不同路径文件到同一目录的技…

【CSDN 每日一练 ★☆☆】【二叉树/递归】二叉树的最小深度

【CSDN 每日一练 ★☆☆】【二叉树/递归】二叉树的最小深度 二叉树 递归 题目 给定一个二叉树&#xff0c;找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明&#xff1a;叶子节点是指没有子节点的节点。 示例 示例 1&#xff1a; 输入…

visio中没有的图标怎么找以及如何导入

1、收藏夹&#xff1a;再也不用担心找不到图标位置了 很多人也许都不知道&#xff0c;Visio自带一个收藏夹&#xff0c;类似于浏览器的书签栏&#xff0c;可以将常用的图标收藏起来&#xff08;通过拖拉的方式&#xff09;&#xff1a; 注意&#xff1a;收藏夹里面不仅可以收藏…

图数据库Neo4j——Neo4j简介、数据结构 Docker版本的部署安装 Cypher语句的入门

前言 MySQL是一种开源的关系型数据库管理系统&#xff0c;使用SQL作为其查询语言&#xff0c;常见的关系型数据库有MySQL、Oracle、SQL Server、PostgreSQL等。相关博客文章如下&#xff1a; 【合集】MySQL的入门进阶强化——从 普通人 到 超级赛亚人 的 华丽转身PostgreSQL数…

分享程序员赚钱的一些门路

引言 实现财务自由几乎是每一个人的梦想&#xff0c;程序员也不另外。都梦想着在工作之外找一个副业&#xff0c;边上着班&#xff0c;边“开启自己的事业”。 可是&#xff0c;很多人都只是停留在想想而已&#xff0c;或者总是在等待一个机会&#xff0c;如此而已。时间一天…

因存在色情内容,夸克被罚50万元

媒体经济的繁荣、自媒体、直播等各种形式的信息传播疯狂发展&#xff0c;但是各种形式的信息资源大规模生产时&#xff0c;“色情”&#xff0c;“暴力”的图像和视频不可控的滋生&#xff0c;特别是某些 APP 或浏览器。一旦打开&#xff0c;满屏都是“哥哥&#xff0c;快来啊”…

Linux学习第27天:Platform设备驱动开发(一): 专注与分散

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 专注与分散是我在题目中着重说明的一个内容。这是今天我们要学习分离与分层概念的延伸。专注是说我们要专注某层驱动的开发&#xff0c;而对于其他层则是芯片厂商…

在centos服务器中完成jdk,tomcat,MySQL的安装以及前后端分离项目中后端的部署

目录 一. jdk&#xff0c;tomcat的安装 1.将要安装的软件压缩包放入到centos服务器上 2. 解压对应的安装包 3. jdk环境变量配置 4. tomcat启动 5. 关闭防火墙 二. MySQL安装 1. 卸载mariadb&#xff0c;否则安装MySql会出现冲突(先查看后删除再查看) 2. 将MySQL安装包解…

【新品】数字化电子智能标签!支持定制服务!!

6年专业研发生产工厂 【NFC防水款】 2.9寸无源NFC电子墨水屏 采用新型无源NFC技术 无须内置电池耗电&#xff0c;没有续航烦恼 新型无源NFC无线刷图技术 采用无源NFC方案&#xff0c;无须内置电池 没有繁琐接线&#xff0c;工作稳定 【电子日历款】 7.5寸单面日历电子墨水屏…