SpringBoot开发——Spring Boot 3种定时任务方式

文章目录

  • 一、什么是定时任务
  • 二、代码示例
    • 1、 @Scheduled 定时任务
    • 2、多线程定时任务
    • 3、基于接口(SchedulingConfigurer)实现动态更改定时任务
      • 3.1 数据库中存储cron信息
      • 3.2 pom.xml文件中增加mysql依赖
      • 3.3 application.yaml文件中增加mysql数据库配置:
      • 3.4 创建定时器
      • 3.5 启动测试

一、什么是定时任务

在项目开发过程中,经常会使用到定时任务。顾名思义,定时任务一般指定时执行的方法。例如,每天凌晨0点同步 A 系统的数据到 B 系统;每2小时统计用户的积分情况;每周一给支付宝用户推送上周收入支出数据报表等等。
一般情况下,很多业务会定时在凌晨进行处理。因为这能避开用户使用高峰期,空闲时服务器资源充足,而且对用户影响小。
通过 Spring Boot 框架,我们可以使用3种方式来实现定时任务。

  • 第1种是基于注解的方式,比较常用,但是这种在程序运行过程种不能动态更改定时任务的时间。
  • 第2种是可以动态更改定时任务的时间。
  • 第3种是可以动态更改定时任务的时间,还可以动态启动,停止定时任务。

二、代码示例

1、 @Scheduled 定时任务

使用 Spring Boot 内置的注解方式,即在需要定时执行的方法上添加@Scheduled注解即可。定时执行的方法不能有参数,并且一般没有返回值,即使有返回值也没什么用。注意定时任务所在的类要作为 Spring Bean,在类上添加@Component注解即可。

package com.chenpi.springschedule.task;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;/*** @author * @version 1.0* @description 定时任务类* @date 2024-11-05*/
@Component
public class ScheduledTask {private static final Logger LOGGER = LoggerFactory.getLogger(ScheduledTask.class);// 每5秒执行一次@Scheduled(cron = "0/5 * * * * ? ")public void test() {LOGGER.info(">>>>> ScheduledTask doing ...");}
}

然后在启动类上添加@EnableScheduling注解开启定时任务。默认情况下,系统会自动启动一个线程,调度执行项目中定义的所有定时任务。

package com.chenpi.springschedule;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;@SpringBootApplication
@EnableScheduling
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}}

启动项目,即可在控制台中每5秒看到定时任务被执行

2024-11-05 20:46:55.011  INFO 11800 --- [ scheduling-1] c.c.springschedule.task.ScheduledTask    : >>>>> ScheduledTask doing ...
2024-11-05 20:47:00.014  INFO 11800 --- [ scheduling-1] c.c.springschedule.task.ScheduledTask    : >>>>> ScheduledTask doing ...
2024-11-05 

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

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

相关文章

CMS那点事

大家好,今天我们来深入探讨JVM垃圾回收机制中备受关注的老年代垃圾回收器——CMS(Concurrent Mark Sweep)。 CMS垃圾回收算法:标记-清理 CMS的核心算法是标记-清理。简单来说,它分为两个主要步骤: 标记&a…

中仕公考:大三大四考公备考时间线

大三大四想要考公务员的可以借鉴以下时间线: 大三下学期: 基础看课阶段,刚开始先打好基础很重要,根据课程和教材理解知识点,按照模块学习,对考试科目的题型有深入的认识和掌握。 大四初: 强…

Android Studio 将项目打包成apk文件

第一步:选择Build -> Generate Signed APK 会出现: 我们选择 Create new… 然后选择你要存放密钥的地方 点击ok之后,则选择好了文件,并生成了jks文件了。 点击ok之后, 会出现: 选择release&#xf…

股票投资学习路线图

股票投资指南 一、深度解析股票特性 业绩周期视角: 每支股票都有其独特属性,识别周期股、游资股与白马股,洞察不同阶段的最佳投资策略。 市场地位剖析: 掌握龙头(正龙、补位、卡位)、前排、中军、后排…

FFmpeg存放压缩后的音视频数据的结构体:AVPacket简介,结构体,函数

如下图的解码流程,AVPacket中的位置 FFmpeg源码中通过AVPacket存储压缩后的音视频数据。它通常由解复用器(demuxers)输出,然后作为输入传递给解码器。 或者从编码器作为输出接收,然后传递给多路复用器(mux…

纺织品缺陷检测

项目源码获取方式见文章末尾! 600多个深度学习项目资料,快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【基于CNN-RNN的影像报告生成】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【GAN模型实现二次元头像生成】 4.【CNN模型实现…

SSM房屋销售管理系统-计算机毕业设计源码49529

摘 要 随着国民生活水平的提高,人们日益重视休闲旅游,而互联网的普及也为房屋销售管理带来了新的机遇。将房屋租赁产业与互联网相结合,利用 SSM 框架建设房屋销售管理系统,实现房屋销售管理的网络化,对提高国民经济发展…

2023年09月中国电子学会青少年软件编程(Python)等级考试试卷(三级)答案 + 解析

青少年软件编程(Python)等级考试试卷(三级) 一、单选题(共25题,共50分) 有一组数据存在列表中,things=[“桌子”,“椅子”,“茶几”,“沙发”,“西瓜”,“苹果”,“草莓”,“香蕉”],若想要输出其中的水果数据,则下列处理恰当的是?( )A. print(things) B. print(t…

docker进行SRS直播服务器搭建

docker进行SRS直播服务器搭建 docker构建参考地址: 地址: https://github.com/ossrs/srs https://ossrs.net/lts/zh-cn/docs/v5/doc/getting-started docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080 \-p 8000:8000/udp -p 10080:10080/udp ossrs/sr…

【PLC一体机】触摸屏上一直显示ERR警示灯的原因和解决方法

博主之前买了一个PLC一体机,在触摸屏上有ERR、RUN和SYS三个显示灯(如下图) 其中触摸屏工作时,RUN显示灯会显示为绿色,证明触摸屏正常工作。 SYS是触摸屏上刷写PLC程序和触摸屏程序时,会显示为橙色&#xf…

(十四)JavaWeb后端开发——MyBatis

目录 1.MyBatis概述 2.MyBatis简单入门 3.JDBC(了解即可) 4.数据库连接池​ 5.lombok 6.MyBatis基本操作 7.XML映射文件 8.动态SQL 8.1 if标签 8.2 foreach标签 8.3 sql/include标签​ 1.MyBatis概述 MyBatis是一款优秀的持久层&#xff08…

Elasticsearch可视化工具Elasticvue插件用法

目录 1.打开浏览器扩展程序(示例Edge浏览器) ​2.搜索elasticvue并安装 3.打开elasticvue ​4.连接Es 5.有些浏览器无法下载安装扩展,例如谷歌。可以打包扩展给别的浏览器使用。 5.1打开浏览器扩展,打开开发人员模式,记住扩展程序id 5…

数据结构之排序补充

1. 非比较排序 上一篇文章我们罗列了数据结构中排序的八种方法。这八种方法都是需要比较才能实现的,那怎么样才可以通过非比较的方法来实现数组的排序呢?这里就提供一种非比较排序的方法。 具体的操作思路如下: 1. 先统计待比较数组arr中重…

1.62亿元!812个项目立项!上海市2024年度“科技创新行动计划”自然科学基金项目立项

本期精选SCI&EI ●IEEE 1区TOP 计算机类(含CCF); ●EI快刊:最快1周录用! 知网(CNKI)、谷歌学术期刊 ●7天录用-检索(100%录用),1周上线; 免费稿件评估 免费匹配期…

危!这些高危端口再不知道问题就大了

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部 下午好,我的网工朋友。 端口作为网络通信的基本单元,用于标识网络服务和应用程序。 但某些端口由于其开放性和易受攻击的…

C/C++|关于“子线程在堆中创建了资源但在资源未释放的情况下异常退出或挂掉”如何避免?

文章目录 主线程监控子线程状态并负责清理资源使用智能指针(RAII模式)线程清理处理函数(pthread_cleanup_push、pthread_cleanup_pop)使用资源管理器或资源吃集中管理资源通过信号或全局变量监控线程状态使主线程负责分配和释放资源 在 C/C 中处理子线程…

Excel中截取中文地址转换为省、市、区

使用方法/步骤 首先我们在网页打上方方格子,进入官网,下载方方格子。 解压后进行安装,打开OFFIE中的EXCEL,可以发现新新添加一个DIY工具箱,其中的提取地址功能可以将字符串地址解析为省、市、区 如下图所示

OpenSIPS 转发 JSSIP 注册消息到 FreeSWITCH

OpenSIPS IP 地址:192.168.31.213 FreeSWITCH IP 地址: 192.168.31.166 转发注册消息的路由代码应该是: if (is_method("REGISTER")) {save("location", "r");if ($pr "ws" || $pr "wss&q…

人民法院报:环境侵权诉讼中“虚假鉴定意见”提供者的刑事责任

2023年8月,最高人民法院发布了《关于审理生态环境侵权责任纠纷案件适用法律若干问题的解释》和《关于生态环境侵权民事诉讼证据的若干规定》(以下简称《规定》),旨在进一步健全完善生态环境审判法律适用规则体系,推动生…

React.lazy() 懒加载

概要 React.lazy() 是 React 16.6 引入的一个功能,用于实现代码分割(code splitting)。它允许你懒加载组件,即在需要时才加载组件,而不是在应用初始加载时就加载所有组件。这种方法可以显著提高应用的性能&#xff0c…