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.xdnf.cn/news/6264.html

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

相关文章

让火患无处遁形,RFID智能应急消防管理来帮忙

我国常受自然灾害侵扰,灾害间的相互影响日益加剧,给灾害救援任务带来了前所未有的挑战。当前,专业救援队伍的实力亟需扩充,现代救援装备的配置亟须加强,保障体系亟待优化,应急预案及联动作战机制亦需深化完…

新视野大学英语读写教程1第四版PDF+答案+听力音频

《新视野大学英语》(第四版) 系列教材包含1—4级, 供两个学年使用。每一级别包含《读写教程》(配教师用书)、《视听说教程》(配教师用书)、《综合训练》和《长篇阅读》。教材提供教学管理平台、数字课程、微课视频、移动学习应用、教学课件、试题库等立体丰富的教学…

华为手机卸载系统应用的方法

摘要: 1.手机环境:手机需要开启开发者模式并使用usb连接电脑,并选择文件传输模式 2.电脑环境:使用鸿蒙工具箱进行傻瓜操作或安装adb工具进行命令卸载 3.鸿蒙工具箱和adb工具本质都是使用adb shell pm uninstall -k --user 0 xx…

优化EDM邮件营销,送达率与用户体验双赢

EDM邮件营销需选对平台,优化邮件列表,确保内容优质,进行邮件测试,关注用户反馈调整频率,以保高送达率,提升营销效果。 1. 了解电子邮件送达率的重要性 在开始优化邮件送达率之前,首先需要理解电…

class com.alibaba.fastjson2.JSONObject cannot be cast to class com.ruoyi.sys

class com.alibaba.fastjson2.JSONObject cannot be cast to class com.ruoyi.sys ry-cloud报错原因解决 ry-cloud 报错 系统监控→在线用户打开后报错 报错信息如下 class com.alibaba.fastjson2.JSONObject cannot be cast to class com.ruoyi.sys原因 type导致&#xff…

靠Python真的能实现经济自由,学会了你也可以

不知道大家有没有注意到,最近关注的很多人都在聊“副业and兼职”这件事。 毕竟单一收入已经不能满足现代人的需求了。 对于普通人来说,想要跳出固定思维和舒适圈,相比于孤注一掷的创业,更推荐兼职。 很多人想要创业,…

掌握 PyQt5:从零开始的桌面应用开发

PyQT5——图形化界面 文章目录 PyQT5——图形化界面集成化图形界面工具为什么使用 \$ProjectFileDir$?示例场景其他 Varaiablespyuic参数解释整体含义示例使用PyQt5和pyuic 创建pyqt5的程序创建一个窗口app.exec\_()和sys.exit(app.exec_())的区别1. app.exec_()2. sys.exit(a…

[HCTF 2018]WarmUp 1

[HCTF 2018]WarmUp 1 审题 观察题目&#xff0c;查看源代码&#xff0c;看到source.php。 访问&#xff0c;看到源代码。 知识点 PHP的代码审计&#xff0c;include函数的应用&#xff0c;文件包含漏洞。 代码审计 <?phphighlight_file(__FILE__);class emmm{public s…

智慧水肥一体化:道品科技现代农业的智能管理模式

智慧水肥一体化是现代农业中一种重要的管理模式&#xff0c;它通过信息技术和物联网技术的结合&#xff0c;实现对水资源和肥料的智能化管理。这一系统的主要功能包括环境监测、集中管理、智能控制、主动报警和数据管理。以下将分别对这些功能进行详细阐述&#xff0c;并探讨智…

UE5.4 PCG 岩石批量复制创建顶部植被

1.复制石头和石头的采点 2.加入想要的植被

卖模版还能赚到钱吗?

说到赚钱&#xff0c;我想大部分人都会感兴趣。但如果告诉大家现阶段卖模板也能赚钱&#xff0c;可能还是有人不信。我要说说我的观察了。 本文可在公众号「德育处主任」免费阅读 我是一只临期程序猿&#xff0c;我最早接触到“模板能卖钱”这个概念是在模板王里。模板王平台上…

怎么样鉴定疾病相关稀有细胞群?二值化精细模型标签,这个刚发的顶刊单细胞算法值得一学!

生信碱移 HiDDEN&#xff1a;抽丝剥茧 在具有病例和对照单细胞RNA测序研究中&#xff0c;样本级标签通常被直接赋予单个细胞&#xff0c;假设所有病例细胞都受影响。这种传统方法在受影响细胞比例较小或扰动强度较弱时&#xff0c;难以有效识别关键细胞及其标记基因&#xff…

第十九周机器学习笔记:GAN的数学理论知识与实际应用的操作

第十九周周报 摘要Abstratc一、机器学习——GAN Basic Theory1. Maximum Likelihood Estimation2. 复习训练GAN的过程3. Objective function与JS散度相关性推导4. GAN的实际做法 总结 摘要 本周周报主要围绕生成对抗网络&#xff08;GAN&#xff09;的基础知识和理论进行深入探…

计算机网络八股文个人总结

1.TCP/IP模型和OSI模型的区别 在计算机网络中&#xff0c;TCP/IP 模型和 OSI 模型是两个重要的网络协议模型。它们帮助我们理解计算机通信的工作原理。以下是它们的主要区别&#xff0c;以通俗易懂的方式进行解释&#xff1a; 1. 模型层数 OSI 模型&#xff1a;有 7 层&#…

Web Workers 学习笔记

最近在开发中遇到了一个需求&#xff0c;一大堆的图片都需要调用两个接口。这对单线程的 JavaScript 运行环境构成了挑战&#xff0c;容易影响用户体验。所以决定学习 Web Workers 并记录一下。 Web Workers 的作用就是提供一个多线程环境&#xff0c;允许将一些繁重任务&…

YOLO11改进|注意力机制篇|引入HAT超分辨率重建模块

目录 一、HAttention注意力机制1.1HAttention注意力介绍1.2HAT核心代码二、添加HAT注意力机制2.1STEP12.2STEP22.3STEP32.4STEP4三、yaml文件与运行3.1yaml文件3.2运行成功截图一、HAttention注意力机制 1.1HAttention注意力介绍 HAT模型 通过结合卷积特征提取与多尺度注意力机…

关于wordpress instagram feed 插件 (现更名为Smash Balloon Social Photo Feed)

插件地址&#xff1a; Smash Balloon Social Photo Feed – Easy Social Feeds Plugin – WordPress 插件 | WordPress.org China 简体中文 安装后&#xff0c;配置教程&#xff1a; Setting up the Instagram Feed Pro WordPress Plugin - Smash Balloon 从这里面开始看就…

ElasticSearch认识

ElasticSearch是什么&#xff1f; Elasticsearch 是一个基于 Apache Lucene 构建的开源分布式搜索引擎和分析引擎。它专为云计算环境设计&#xff0c;提供了一个分布式的、高可用的实时分析和搜索平台。Elasticsearch 可以处理大量数据&#xff0c;并且具备横向扩展能力&#…

在 Google Chrome 上查找并安装 SearchGPT 扩展

ChatGPT 搜索 (SearchGPT)&#xff0c;一个嵌入在流行的 ChatGPT 聊天机器人中的全新搜索引擎&#xff0c;可以改变人们搜索网页的方式。如果你想让它更容易找到并使用它&#xff0c;可以通过安装它的 Chrome 扩展程序。 ChatGPT 搜索是一个快速、精准且无广告的搜索引擎&…

两道算法题

一、算法一 Amazon would like to enforce a password policy that when a user changes their password, the new password cannot be similar to the current one. To determine whether two passwords are similar, they take the new password, choose a set of indices a…