Spring Boot 定时任务实现教程

前言

在实际开发过程中,我们经常需要处理一些周期性或定时执行的任务,如数据备份、报表生成、邮件发送等。Spring Boot通过集成Quartz或使用Spring自带的@Scheduled注解可以方便地实现定时任务功能。本文将详细介绍如何在Spring Boot项目中使用@Scheduled注解实现定时任务。

一、环境准备

确保你的Spring Boot项目已包含以下依赖:

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

注意:Spring Boot 2.x以上版本默认已经包含了task调度的starter,无需额外引入。

二、创建定时任务类

首先,我们需要创建一个类并在这个类中定义我们的定时任务方法,然后使用@Component注解将其声明为Spring Bean,并使用@EnableScheduling注解开启计划任务的支持。

import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;@Component
@EnableScheduling
public class ScheduledTasks {// 假设这个方法用于每5秒输出当前时间@Scheduled(fixedRate = 5000) // 5000毫秒 = 5秒public void executeTask() {System.out.println("当前时间:" + new Date());}
}
  • @Scheduled注解:此注解用于标记方法为定时任务方法。
  • fixedRate = 5000:表示该方法每隔5秒执行一次,单位是毫秒。

三、配置详解

  1. cron表达式

除了固定间隔执行外,还可以使用cron表达式来定义复杂的定时规则,例如每天凌晨3点执行任务:

@Scheduled(cron = "0 0 3 * * ?") 
public void cronTask() {System.out.println("Cron Task executed at " + new Date());
}

这里的cron表达式遵循Unix cron服务的格式,各字段含义如下:

  • 秒(0-59)
  • 分(0-59)
  • 时(0-23)
  • 月中的日期(1-31)
  • 月份(1-12)
  • 星期(0-7 0和7都代表周日)
  • 年份(可为空,代表忽略年份)
  1. 其他参数
  • initialDelay: 表示延迟多久后开始第一次执行任务,默认值为0。
  • fixedDelay: 表示上一次任务执行完毕后,间隔多久再次执行任务。

四、启动定时任务

由于我们在类级别启用了定时任务调度,所以只需正常启动Spring Boot应用,定时任务就会按照指定的时间规律自动执行。

结语

至此,我们已经在Spring Boot中成功实现了定时任务的功能。实际上,@Scheduled注解配合Spring Boot提供的定时任务支持,可以灵活地满足各种场景下的定时任务需求。在实际项目中,可以根据具体业务逻辑编写相应的定时任务方法,实现自动化处理流程。

希望这篇文章对您理解和实践Spring Boot定时任务有所帮助。在未来的工作中,你可能会遇到更复杂的需求,比如动态管理定时任务、多线程并发执行等,这些都可以在Spring Boot的基础上进一步扩展和优化。

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

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

相关文章

【数据结构】遍历二叉树(递归和非递归遍历的先序、中序和后序遍历、层次遍历法)

目录 【数据结构】遍历二叉树&#xff08;递归和非递归遍历的先序、中序和后序遍历、层次遍历法&#xff09;一、递归算法先&#xff08;根&#xff09;序的遍历算法中&#xff08;根&#xff09;序的遍历算法后&#xff08;根&#xff09;序的遍历算法 二、非递归算法层次遍历…

【漏洞复现】浙大恩特客户资源管理系统 i0004_openFileByStream.jsp 任意文件读取漏洞

0x01 产品简介 浙大恩特客户资源管理系统是一款外贸管理软件&#xff0c;它提供了多种功能&#xff0c;包括客户档案管理、邮件管理、OA外贸办公管理系统、分管权限管理、联系跟进及提醒、业务检查管理、统计分析管理等。 0x02 漏洞概述 浙大恩特客户资源管理系统存在任意文件…

ENSP-旁挂式AC

提醒&#xff1a;如果AC不能成功上线AP&#xff0c;一般问题不会出在AC上&#xff0c;优先关注AC-AP线路上的二层或三层组网的三层交换机 拓扑图 管理VLAN&#xff1a;99 | 业务VLAN&#xff1a;100 注意点&#xff1a; 1.连接AP的接口需要打上pvid为管理vlan的标签 2.AC和…

通用视觉大模型调研

humanbench HumanBench: Towards General Human-centric Perception with Projector Assisted Pretraining&#xff1b;为了解决不同任务之间的conflict以及不同dataset之间的差异(相同任务)&#xff0c;提出PATH&#xff0c;backbone是所有任务共享、projector是任务级别共享…

一个开源的全自动视频生成软件MoneyPrinterTurbo

只需提供一个视频 主题 或 关键词 &#xff0c;就可以全自动生成视频文案、视频素材、视频字幕、视频背景音乐&#xff0c;然后合成一个高清的短视频。 一&#xff1a;功能特性 完整的 MVC架构&#xff0c;代码 结构清晰&#xff0c;易于维护&#xff0c;支持 API 和 Web界面…

DOS命令第二篇

雷迪斯and the乡亲们 欢迎你们来到 奇幻的编程世界 一、echo命令 作用&#xff1a; 输出一个内容到终端 格式&#xff1a; echo 要输出的内容 案例&#xff1a; 直接输出一个“你好” 二、ping 概念&#xff1a; 在网络中通信的时候&#xff0c;主机之间进行通信依靠…

转行或者跳槽入职一家新公司,应该如何快速上手工作?

不管是干测试也好或者其它任何职业&#xff0c;没有谁会在一家公司待一辈子&#xff0c;转行不一定&#xff0c;但是跳槽是每一个打工人早晚都会面临的事情&#xff0c;今天就来跟大家聊聊这件事~ 入职一家新公司&#xff0c;你应该做什么可以最快速的上手工作&#xff1f; 这…

App Inventor 2 如何预览PDF文档?

预览PDF文档的方式 你可以使用Activity启动器查看已存储在你的设备上的 pdf 文档&#xff0c;也可以使用Web客户端通过网址URL打开 pdf 文档。 App Inventor 2 可以使用 .pdf 扩展名从程序包资产中查看 pdf 文件&#xff0c;不再需要外部 pdf 查看器&#xff01; 代码如下&a…

车载摄像头畸变校正解决方案,打造无畸变高清视界

在车载摄像头日益普及的今天&#xff0c;摄像头图像的畸变问题成为了制约图像质量提升的一大瓶颈。畸变不仅影响画面的美观度&#xff0c;更关键的是它可能导致智能驾驶系统对环境的误判&#xff0c;进而威胁到行车安全。美摄科技凭借其在图像处理领域的深厚实力&#xff0c;推…

中东跨境电商平台Noon注册开店步骤详解

中东地区&#xff0c;素以“满地富豪”闻名&#xff0c;同时拥有发达的电子商务环境与较高的居民消费水平&#xff0c;吸引了大量跨境电商从业者前来寻求商机。其中&#xff0c;Noon作为中东地区颇具人气的电商平台&#xff0c;自然而然成为了众多卖家开拓中东市场的首选平台。…

Flex布局(秒懂弹性盒子的使用)

目录 一、Flex介绍 1.概念 主要概念&#xff1a; 2.Flex容器属性 3.Flex项目属性 4.优势 二、Flex使用 1.弹性盒子内容 2.flex-direction 语法 3.justify-content 属性 4.align-items 属性 语法 5.flex-wrap 属性 语法&#xff1a; 6.align-content 属性 语法&am…

jetson系列开发板使用虚拟机烧录系统时,遇见无法识别开发板的情况

在双系统中的ubuntu系统烧录没问题&#xff0c;但是电脑Ubuntu系统由于版本低&#xff0c;所以没有网络&#xff0c;烧录起来还的连网线&#xff0c;所以问了开发板的工程师&#xff0c;所幸&#xff0c;解决了问题&#xff0c;很感谢工程师的指导&#xff0c;特此记录一下&…

【研发日记】CANoe自动化测试的配置方式(三)——SystemVariables数组方式

文章目录 前言 一、例程功能 二、仿真ECU 三、SystemVariables数组&#xff1a; 四、测试模块 五、测试运行效果 六、分析和应用 总结 前言 近期在做的一个自动化测试项目&#xff0c;尝试了一种以前没用过的测试配置方式&#xff0c;感觉效果还不错。然后又回顾了一下以…

JVM主要知识点详解

目录 1. 性能监控和调优 1.1 调优相关参数 1.2 内存泄漏排查 1.3 cpu飙⾼ 2. 内存与垃圾回收 2.1JVM的组成&#xff08;面试题&#xff09; 2.2 Java虚拟机栈的组成 2.3 本地方法栈 2.4 堆 2.5 方法区&#xff08;抽象概念&#xff09; 2.5.1 方法区和永久代以及元空…

阿里云服务器8核16G配置最新租用收费价格表与优惠价格

8核16G配置是大部分企业级用户购买阿里云服务器的首选配置&#xff0c;2024年经过调价之后&#xff0c;8核16G配置的阿里云服务器按量收费标准最低为0.9元/小时&#xff0c;按月租用平均优惠月价最低收费标准为432.0元/1个月&#xff0c;按年购买最低活动价格为1803.17元/1年&a…

Avalonia中嵌入网页程序(CefNet)

Avalonia中嵌入网页程序cefNet 1. 引入CefNetNuget包2. 下载 cef 基础环境3. 将cef基础环境放入程序运行目录下4. 代码中初始化cef5. 添加Webview控件6. 在窗口关闭的时候释放Cef7. 项目结构图CefNet 开源的作者已经停止维护并删除了原始的代码库:GetHub:CefNet,Nuget上还有发…

# ABAP SQL 字符串处理-CONCATCAST

经常我都要在ABAP的sql语句中对字符串进行处理&#xff0c;现在就总结一下可以用到的方法 文章目录 字符串处理拼接字段运行结果 填充字符串运行结果 截取字符串 SUBSTRING运行结果 CAST转换类型程序运行结果 CAST 转换成 DATS类型&#xff08;日期&#xff09; 字符串处理 在…

【c语言】结构体的访问

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;C语言 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步&…

webIDE jupyternotebook中添加虚拟环境

困扰了我好久啊啊啊终于可以了&#xff0c;好了步入正题&#xff1a; 首先参考这个博客 指路 但是有一些错误&#xff0c;就是我添加我的虚拟环境时显示权限不够 我就在这一步前面加上了sudo python -m ipykernel install --nameyour_env_name(虚拟环境名)但是又显示 sudo: p…

DIY可视化实现仿抖音短视频代码生成器

DIY可视化实现仿抖音短视频代码生成器&#xff0c;仿抖音短视频兼容uniapp、微信小程序 丝滑切换视频效果&#xff0c;无限数据加载不卡顿&#xff0c;高性能滑动不卡顿超流畅&#xff0c;观看视频丝滑切换&#xff0c;页面内容自定义&#xff0c;无限数据加载不卡顿。 在线设…