快速上手,spring boot3整合task实现定时任务

在已经上线的项目中,定时任务是必不可少的。基于spring boot自动装配的原理,我们要集成task定时任务还是非常简单的。只需要简单的两步就可以实现。

1、创建一个spring boot项目,并在项目的启动类(也不一定非要是启动类,只要@Configuration注解标识过的配置类就行)上加@EnableScheduling注解。这个注解用于开启定时任务的支持

@SpringBootApplication
@EnableScheduling
public class Springjdk21TestApplication {public static void main(String[] args) {SpringApplication.run(Springjdk21TestApplication.class, args);}}

2、直接在项目中使用定时任务即可。

创建一个bean。在这个bean中创建想要定时执行的方法,并在这个方法上加入@Scheduled注解即可。

@Component
public class TestTask {
/*** 定时任务,每隔5秒执行一次*/
@Scheduled(fixedRate = 5000)
public void sayHello() {System.out.println("say hello========>"+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));}}

fixedRate表示从启动项目开始,每个多少毫秒执行一次。

现在启动我们的主类,可以看到定时任务已经执行;

可以看到,每个5秒钟,控制台输出了一次打印语句。

当然,使用fixedRate参数只能实现简单的定时任务,假如我们的定时任务比较复杂呢。比如,我们要自定义任务的开始时间和执行间隔,这时fixedRate已经不能满足我们的需求了,我们需要使用另一种方法,cron表达式。

cron表达式是一种用于配置定时任务(计划任务)执行时间的字符串表达式

一个cron表达式由6或7个字段组成,分别表示如下时间单位:

  1. 秒(Seconds) - 0 - 59
  2. 分(Minutes) - 0 - 59
  3. 小时(Hours) - 0 - 23(24小时制)
  4. 日期(Day of Month) - 1 - 31
  5. 月份(Month) - 1 - 12 或 JAN-DEC
  6. 星期几(Day of Week) - 0 - 7 或 SUN-SAT(7或0表示星期天)
  7. 年份(Year,可选) - 1970 - 2099

字段之间使用空格分隔,表示时间的顺序。

(在标准的cron表达式中,通常是6个字段,不包括年份。但是,有些系统和应用允许扩展cron表达式到7个字段,加入年份字段。(7个字段)可能不被所有cron作业调度器支持,特别是在一些Unix/Linux系统中。在Java的Spring框架中,如果你使用@Scheduled注解,通常不需要指定年份,因为Spring的调度器默认不会扩展到7个字段。)

当然,现在的spring boot的高版本也不支持cron的7个参数了。cron表达式的设计初衷是为了在操作系统层面设置周期性的计划任务,而不是用来安排一次性的特定日期和时间。如果你需要在特定年份执行任务,你应该使用应用程序逻辑来处理年份,或者选择一个不同的调度方法来处理跨年度的任务。

特殊字符:

  • *:代表所有可能的值。例如,在分钟字段中使用*,表示每分钟。
  • ?:表示不指定值。只能在日期和星期几字段中使用。
  • -:表示一个范围。例如,10-12 小时 表示从上午10点到12点。
  • /:表示起始时间开始,每隔一定的间隔执行。例如,在分钟字段中使用0/30,表示每30分钟。
  • L:表示“Last”,只能用于日期和星期几字段。例如,在日期字段使用L,表示月份的最后一天。
  • W:表示有效工作日(周一到周五),不能和L一起使用,只能用于日期字段。
  • #:表示星期几的第几个周。例如,6#3表示某月的第三个星期天。

一般,我们只需要知道cron表达式对应的含义就行,不需要我们自己进行编写。使用到的时候直接在往上搜一个在线的生成网址即可。

cron的在线生成网址:在线Cron表达式生成器 (qqe2.com)

我们需要的时候,直接使用图形化的界面点击生成相应的cron表示式即可。

* * 12 1 * ? 

这个cron是我使用网址生成的,表示每个月1号的中午12点执行一次。

@Component
public class TestTask {
/*** 定时任务,每隔5秒执行一次*/
@Scheduled(cron = "* * 12 1 * ?")
public void sayHello() {System.out.println("say hello========>"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
}}

由于spring boot的自动装配,官方已经帮我们做了很多工作。我们只需要安装官方的约定,简单的做一些配置就可以轻松的实现绝大多数功能。

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

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

相关文章

LabVIEW 实现用户授权与管理多项测试项目

在使用 LabVIEW 开发测试软件时,用户授权和项目管理是一个重要的功能。为了确保系统安全性、灵活性和可扩展性,可以设计一个用户管理系统,允许管理员增加或减少用户的测试项目权限。以下是一个详细的实现方案,包括用户授权管理、项…

buu做题(7)

[BJDCTF2020]Mark loves cat 开始的界面没啥东西, 看了下源码好像也没啥东西 用dirsearch扫描一下 有git 泄露 用工具githack下载源码 <?phpinclude flag.php;$yds "dog"; $is "cat"; $handsome yds;foreach($_POST as $x > $y){$$x $y; }f…

GNSS相关资料

常识 GNSS(二)&#xff0c;自动驾驶定位团队的“保护伞”&#xff1a;https://owwjm7oycuv.feishu.cn/docx/BAfsdC34zoN6htx4uUycbvknnub#CiWXdRZfWoqrzmxRptJcH7MYnug GNSS伪距差分和RTK&#xff1a;https://zhuanlan.zhihu.com/p/680687517 关于GNSS技术介绍&#xff08;一&…

江科大/江协科技 STM32学习笔记P6

文章目录 LED闪烁&LE流水&蜂鸣器一、操作STM32的GPIO步骤二、RCC库函数什么是AHB与APB&#xff1f; 三、GPIO库函数GPIO初始化选择IO接口工作方式 四、四种方法实现LED闪灯 LED闪烁&LE流水&蜂鸣器 一、操作STM32的GPIO步骤 1、使用RCC开启GPIO的时钟 2、使用…

CV Method:YOLOv10 vs YOLOv8

文章目录 前言一、介绍二、YOLOv8 and YOLOv10 Comparison1.模型结构YOLOv8&#xff1a;YOLOv10&#xff1a; 2. 推理和时延3. 检测表现4. 参数利用5. 关键比较 总结 前言 YOLOv10已经开源一段时间了&#xff0c;经过我实际使用测试&#xff0c;也确实性能更好一些&#xff0c…

静态IP地址在网络安全中的角色解析与实测分析

在这个网络边界日益模糊的时代&#xff0c;每一次点击、每一次数据传输都有着安全问题。作为网络安全体系中的基石&#xff0c;静态IP地址的角色显得尤为重要而复杂。今天&#xff0c;我们的测评团队将带您深入剖析静态IP地址在网络安全中的多重角色&#xff0c;并通过两家代理…

JavaScript(16)——定时器-间歇函数

开启定时器 setInterval(函数,间隔时间) 作用&#xff1a;每隔一段时间调用这个函数&#xff0c;时间单位是毫秒 例如&#xff1a;每一秒打印一个hello setInterval(function () { document.write(hello ) }, 1000) 注&#xff1a;如果是具名函数的话不能加小括号&#xf…

【图像标签转换】XML转为TXT图像数据集标签

引言 该脚本用于将包含对象标注的 XML 文件转换为 YOLO&#xff08;You Only Look Once&#xff09;对象检测格式的 TXT 文件。脚本读取 XML 文件&#xff0c;提取对象信息&#xff0c;规范化边界框坐标&#xff0c;并将数据写入相应的 TXT 文件。此外&#xff0c;它还生成一个…

做视频混剪都是去哪里找高清素材的?分享10个高清视频素材库

提升视频混剪质感的10个高清素材库推荐 在这个视觉体验至上的时代&#xff0c;视频的视觉质量对吸引观众至关重要。如果你正在寻找高清素材以提升视频混剪作品的层次&#xff0c;那么你来对地方了。今天&#xff0c;我将为你揭秘10个视频混剪达人常用的高清素材库&#xff0c;…

学习笔记-系统框图传递函数公式推导

目录 *待了解 现代控制理论和自动控制理论区别 自动控制系统的组成 信号流图 1、系统框图 1.1、信号线、分支点、相加点 1.2、系统各环节间的连接 1.3、 相加点和分支点的等效移动&#xff08;比较点、引出点&#xff09; 2、反馈连接公式推导 2.1、前向通路传递函数…

Windows:批处理脚本学习

目录 一、第一个批处理文件 1. &&和 | | 2. | 和 & 二、变量 1.传参变量%name 2.初始化变量set命令 3.变量的使用 4.局部变量与全局变量 5.使用环境变量 6.扩充变量语法 三、注释REM和 &#xff1a;&#xff1a; 四&#xff1a;函数 1.定义函数 2.…

js 习题 1

文章目录 前言T1T2T3T4T5T6T7T8T9结语 前言 『最孤独的人最亲切&#xff0c;受过伤的人总是笑的最灿烂。』—— 「素媛」 T1 let buf""; process.stdin.on("readable",function(){let chunkprocess.stdin.read();if(chunk){bufchunk.toString();} });pr…

Python3网络爬虫开发实战(2)爬虫基础库

文章目录 一、urllib1. urlparse 实现 URL 的识别和分段2. urlunparse 用于构造 URL3. urljoin 用于两个链接的拼接4. urlencode 将 params 字典序列化为 params 字符串5. parse_qs 和 parse_qsl 用于将 params 字符串反序列化为 params 字典或列表6. quote 和 unquote 对 URL的…

GIS前沿技术

无论是初步接触到GIS的学生&#xff0c;还是对GIS已经有一定的了解的从业者&#xff0c;肯定都非常关心两个问题&#xff1a;GIS有没有发展前景&#xff0c;GIS有哪些应用价值&#xff1f; 关于这两个问题&#xff0c;笔者的答案是GIS作为一门融合了空间数据采集、存储、处理、…

【数据结构】堆,优先级队列

目录 堆堆的性质大根堆的模拟实现接口实现构造方法建堆入堆判满删除判空获取堆顶元素 Java中的PriorityQueue实现的接口构造方法常用方法PriorityQueue注意事项 练习 堆 如果有一个集合K {k0&#xff0c;k1&#xff0c; k2&#xff0c;…&#xff0c;kn-1}&#xff0c;把它的…

Listen(sockfd,backlog)监听函数的第二个参数到底是什么?深度解释

listen队列剖析 int listen(int sockfd,int backlog) backlog : 监听套接字队列 对于一个调用监听的套接字&#xff0c;系统会维护给这个套接字两个队列 1. 未完成连接队列 //当客户端发生三次握手的第一次syn包给服务器的时候&#xff0c;服务器就会再未完成队列中创建…

2024第29届郑州全国商品交易会

第29届郑州全国商品交易会 2024第四届餐饮与供应链专题展 邀 请 函郑州全国商品交易会&#xff08;简称郑交会&#xff09;是全国大型性经贸活动&#xff0c;一直秉承“政府指导&#xff0c;市场化运作”的模式&#xff0c;自1995年以来已成功举办了二十八届&#xff0c;是国内…

安装caffe-CPU版本并进行训练

目录 前言 0、安装Ubuntu 18.04 版本 输入ls没有反应 ubuntu换源 换源出现的问题 1、安装caffe出现E:Unable to locate package caffe-cpu问题 2、把 code 文件夹下载到 ubuntu 3、在本地使用caffe-CPU&#xff0c;并部署数据标注工具 ATool 问题1 问题2 问题3 命令行…

leedcode-数组-15 最接近的三数之和

原理 1、对数组进行升序排列&#xff1b; 2、定义变量_min&#xff0c;初始值是升序后数组的前3个元素之和&#xff0c;默认当前3个数之和离目标值最近&#xff1b; 3、遍历数组&#xff1b; 4、定义首指针为start&#xff0c;表示当前遍历元素的下一个元素&#xff0c;即i…

URL过滤、DNS过滤和内容过滤的总结

目录 URL过滤 URL和URI URL -- 统一资源定位符 URI --- 统一资源的标识符 URL和URI之间的区别 URL过滤的方式 HTTP协议获取URL的方式 HTTP协议做控制管理的流程 HTTPS协议做控制管理的流程 1&#xff0c;配置SSL的解密功能 2&#xff0c;直接针对加密流量进行过滤 例…