Spring Boot 中的 @Scheduled 注解是什么,如何使用

Spring Boot 中的 @Scheduled 注解是什么,如何使用

引言

Spring Boot 是一个非常流行的 Java Web 开发框架,它提供了很多方便的功能,其中就包括了 @Scheduled 注解。本文将会介绍 @Scheduled 注解的基本用法,并附上代码示例,帮助读者更好地理解和使用该注解。

在这里插入图片描述

@Scheduled 注解是什么?

@Scheduled 注解是 Spring Boot 中的一个定时任务注解,它可以帮助开发者实现一些定时任务,比如定时执行一些任务、定时发送邮件、定时备份数据等等。该注解可以用在方法上,表示该方法需要定时执行。

如何使用 @Scheduled 注解?

使用 @Scheduled 注解非常简单,只需要在需要定时执行的方法上添加该注解即可。该注解有三个参数,分别是 fixedDelay、fixedRate 和 cron。

fixedDelay 参数

fixedDelay 参数表示延迟多久执行下一次任务,单位是毫秒。比如下面的示例中,表示每隔 5 秒执行一次任务。

@Component
public class MyTask {@Scheduled(fixedDelay = 5000)public void doTask() {// 执行任务}}

fixedRate 参数

fixedRate 参数表示每隔多久执行一次任务,单位是毫秒。如果任务的执行时间超过了 fixedRate 的时间间隔,那么下一次任务会在上一次任务结束后立即执行。比如下面的示例中,表示每隔 5 秒执行一次任务。

@Component
public class MyTask {@Scheduled(fixedRate = 5000)public void doTask() {// 执行任务}}

cron 参数

cron 参数是一种更加灵活的定时任务设置方式,可以根据具体需求设置不同的定时任务。cron 表达式的格式如下:

second minute hour day month weekday

其中,每个字段的含义如下:

  • second:秒,取值范围为 0~59。
  • minute:分,取值范围为 0~59。
  • hour:时,取值范围为 0~23。
  • day:日,取值范围为 1~31。
  • month:月,取值范围为 1~12 或 JAN~DEC。
  • weekday:周几,取值范围为 0~7 或 SUN~SAT,其中 0 和 7 都表示周日。

比如下面的示例中,表示每天的凌晨 1 点执行一次任务。

@Component
public class MyTask {@Scheduled(cron = "0 0 1 * * ?")public void doTask() {// 执行任务}}

代码示例

下面是一个完整的示例,演示了如何使用 @Scheduled 注解实现一个定时任务。

@Component
public class MyTask {private static final Logger LOGGER = LoggerFactory.getLogger(MyTask.class);@Scheduled(fixedDelay = 5000)public void doTask() {LOGGER.info("执行任务");}}

上述示例中,我们定义了一个名为 MyTask 的类,并在该类中定义了一个名为 doTask 的方法,该方法被 @Scheduled(fixedDelay = 5000) 注解修饰,表示每隔 5 秒执行一次任务。在该方法中,我们使用了 SLF4J 的日志功能,每次执行任务都会输出一条日志。

总结

@Scheduled 注解是 Spring Boot 中一个非常实用的定时任务注解,可以帮助开发者实现一些定时任务,提高应用程序的自动化程度。本文介绍了 @Scheduled 注解的基本用法,并附上了代码示例,希望读者可以通过本文更好地理解和使用该注解。

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

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

相关文章

使用wxPtyon和pillow开发拼图小游戏(一)

刚学习python,心血来潮,使用wxPython和pillow开了一个简单的拼图小游戏,大家分享一下 wxPython是Python语言的一套优秀的GUI图形库,在此项目里主要用来开发GUI客户页面;Pillow是一个非常好用的图像处理库,…

【学习】ChatGPT对问答社区产生了哪些影响?

引用 StackExchange 社区 CEO Prashanth Chandrasekar 的一篇博客标题 “Community is the future of AI”,引出本文的观点,即ChatGPT对问答社区产生了颠覆性影响,问答社区必须釜底抽薪、涅槃重生,但我们必须坚信“社区才是AI的未…

pycharm 配置github

文章目录 环境必备操作步骤1.在pycharm中配置git和github2.获取ssh密钥3.将本地项目与github仓库连接4.同步本地项目到github 相关问题参考文章 环境必备 pycharm 2020.1:集成开发环境,需要安装并配置环境 PyCharm 开发环境搭建指南:安装、配…

Jmeter之数据参数化方法汇总

一、什么是参数化 Jmeter参数化是指将脚本中的某些需要输入数据使用参数来代替,在脚本运行时指定参数的取值范围和规则。脚本在运行时就可以根据需要选取不同的参数值作为输入。 常用的Jmeter的参数化请求,包括以下几种方式: 用户参数用户…

LRU 缓存

题目链接 LRU 缓存 题目描述 注意点 如果插入操作导致关键字数量超过 capacity ,则应该 逐出 最久未使用的关键字函数 get 和 put 必须以 O(1) 的平均时间复杂度运行 解答思路 如果想以O(1)的速度进行get,则需要将对应的key、value存到map中如果想…

gitlab:(二)gitlab添加win10 台式机的ssh key

当前gitlab版本为12系列: 点击settings 找到ssh keys ,再找到“ generate one or use an existing key.” 点击 generate one 参考如下的教程: window cmd 命令行示例 添加 ssh keys 添加的效果

Qt DAY5 Qt制作简易网络聊天室

服务器 widget.h文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> #include <QTcpSocket> #include <QVector>//向量&#xff0c;函数类模板 #include <QMessageBox>namespace Ui { class Widget; }class Wid…

python接口自动化(二十五)--unittest断言——下(详解)

简介 本篇还是回归到我们最初始的话题&#xff0c;想必大家都忘记了&#xff0c;没关系看这里&#xff1a;传送门 没错最初的话题就是登录&#xff0c;由于博客园的登录机制改变了&#xff0c;本篇以我找到的开源免费的登录API为案例&#xff0c;结合 unittest 框架写 2 个用例…

使用json-server 模拟后端数据

1. json-server是什么 json-server 是一个 Node 模块&#xff0c;运行 Express 服务器&#xff0c;你可以指定一个 json 文件作为 api 的数据源。 简单的说&#xff0c;它可以模拟小型后台接口&#xff0c;在一个JSON文件中操作数据&#xff0c;是基于的node.js的一个模块。 比…

Python批量实现word中查找关键字

一、背景 在日常办公和文档处理中&#xff0c;我们常常需要在大量的Word文档中查找特定的关键字&#xff0c;然后进行接下来的操作&#xff0c;比如关键字替换等。手动逐个打开并搜索文档显然是费时费力的。因此&#xff0c;利用Python编写一个批量实现Word中查找关键字的程序可…

go-zero系列:接入Prometheus

参考文档&#xff1a;https://zhuanlan.zhihu.com/p/463418864 1、下载Prometheus&#xff08;普罗米修斯&#xff09; https://prometheus.io/download/ 进入下载文件夹&#xff0c;比如prometheus-2.44.0.windows-amd64。 然后双击Prometheus.exe启动软件。 启动后&#xff0…

【一步到位】Jenkins的安装、部署、启动(完整教程)

一、测试环境 Linux系统 Centos 7 二、安装步骤&#xff1a; 1、安装jdk 我安装的是jdk8&#xff0c;此处就不多说了&#xff0c;自己百度哈&#xff0c;很简单 2、安装jenkins 首先依次执行如下三个命令&#xff1a; 2.1、导入镜像&#xff1a; [rootcentos7 ~]# sudo …