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

news2024/9/28 19:23:27

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.coloradmin.cn/o/730668.html

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

相关文章

2023 最新「阿里」Java 高级工程师面试高频题

7月份快要过去了,也意味着金九银十快到了,不知道大家有没有发现今年的面试比之前的都难;去年因为疫情的原因压抑住程序员跳槽的想法,再加上现在 IT 行业内卷越来越严重,这两点原因导致今年的招聘市场非常难受&#xff…

【模式识别目标检测】——基于机器视觉的无人机避障RP-YOLOv3实例

目录 引入 一、YOLOv3模型 1、实时目标检测YOLOv3简介 2、改进的实时目标检测模型 二、数据集建立&结果分析 1、数据集建立 2、模型结果分析 三、无人机避障实现 参考文献: 引入 目前对于障碍物的检测整体分为:激光、红外线、超声波、雷达、…

使用FAST方法检测特征点,然后计算这些特征点的ORB描述子,并使用暴力匹配方法找到匹配的特征点

这段代码主要做了以下几件事情: 读取两幅图像使用FAST方法找出图像中的特征点手写ORB方法计算特征点的描述子使用汉明距离(Hamming distance)进行描述子的匹配显示匹配的结果下面我们会逐行解释每一句代码: 包含头文件:这一部分包含了所有需要的库。 ComputeORB 函数:该函…

【验证码逆向专栏】某度滑块、点选、旋转验证码 v1、v2 逆向分析

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未…

SSL密钥算法检测工具-sslciphercheck-SSL/TLS Suffers ‘Bar Mitzvah Attack’漏洞

SSL密钥算法检测工具-sslciphercheck-SSL/TLS Suffers ‘Bar Mitzvah Attack’漏洞 文章目录 sslciphercheck漏洞:SSL/TLS Suffers ‘Bar Mitzvah Attack’漏洞漏洞描述漏洞检测修复建议 sslciphercheck 下载:https://github.com/woanware/woanware.git…

Ubuntu vim 以十六进制的形式显示文件内容

Vim的介绍 Vim(Vi IMproved)是一款开源的文本编辑器,是 Unix 系统中经典的 vi 编辑器的改进版本。它具有强大的功能和高度可定制性,被广泛应用于程序开发、系统管理和文本编辑等领域。 以下是 Vim 的一些主要特点和功能&#xf…

CRC Principle and Implementation Method(Java C)

CRC原理和程序实现方法1_哔哩哔哩_bilibili 其实原理很简单 但是我想了两个小时。。 收获的是原来一些复杂的运算都可以通过位运算来实现。 实现思路 public class CRC16Calculator {public static String CRC16(byte[] bytes) {int CRC 0x0000ffff;int POLYNOMIAL 0x0000a…

【复习3-5天的内容】【我们一起60天准备考研算法面试(大全)-第七天 7/60】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)   文章字体风格: 红色文字表示&#…

Ubuntu Linux系统下创建Git项目并push到远程Github

首先在本地创建git仓库 jasminelhl:~/prj$ mkdir Github-test jasminelhl:~/prj$ cd Github-test jasminelhl:~/prj/Github-test$ git init 提示:使用 master 作为初始分支的名称。这个默认分支名称可能会更改。要在新仓库中 提示:配置使用初始分支名&a…

RabbitMQ的可视化管理页面简介

模块 描述 Overview 概览 Connections 查看连接情况 Channels 信道(通过)情况 Exchanges 交换机(路由)情况,默认四类七个 Queues 消息队列情况 Admin …

高并发架构实战:从需求分析到系统设计

很多软件工程师的职业规划是成为架构师,但是要成为架构师很多时候要求先有架构设计经验,而不做架构师又怎么会有架构设计经验呢?那么要如何获得架构设计经验呢? 一方面可以通过工作来学习,观察所在团队的架构师是如何…

网络安全工程师工作内容具体是什么?

在知乎看到一个帖子:网络安全工程师或者网络安全研究员的工作内容具体是什么?或者说他们的一天具体是怎么度过的,是否和程序员一样编码做项目? Neeao的回复: 只在甲方互联网公司呆过,简单说下甲方的情况。…

“千模千测”——针对大语言模型认知能力的高效测试方法

©PaperWeekly 原创 作者 | 庄严、宁雨亭 单位 | 中国科学技术大学BASE课题组 论文标题: Efficiently Measuring the Cognitive Ability of LLMs: An Adaptive Testing Perspective 作者: Yan Zhuang, Qi Liu, Yuting Ning, Weizhe Huang, Rui Lv, …

Docker 安装Nginx

查看Nginx镜像并拉取镜像: [rootlocalhost nginx]# docker search nginx NAME DESCRIPTION STARS OFFICIAL AUTOMATED nginx …

使用Mybatis添加记录错误

使用Mybatis添加记录错误:Error updating database. Cause: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Out of range value for column ‘id’ at row 1 分析:添加记录的id值超出范围,查看JavaBean中的ID&#…

00-C++-ccache使用

ccache使用 前言ccache是什么ccache使用 前言 在编译大型C项目代码时编译时间比较长,那么可以使用ccache来加速代码的编译,一起来学习吧。 ccache是什么 ccache是一个编译器缓存。它通过缓存以前编译的结果并检测何时再次进行相同的编译来加快重新编译…

201天,太平洋保险核心系统迁至国产数据库OceanBase稳定运行

7月7日,2023全球数字经济大会上,国内首个全险种核心迁移至国产数据库的系统正式亮相。 因支撑未来海量并发、海量数据业务发展需求,太平洋保险(集团)股份有限公司(以下称“太平洋保险”)与Ocea…

使用OpenCV的viz模块创建和控制一个3D可视化窗口

#include <opencv2/viz.hpp> #include <iostream>using namespace cv; using namespace std;int main() {

神经网络解决预测问题(以共享单车预测为例)

背景:大约从2015年起,共享单车席卷了大部分城市。共享单车在给人们带来便利的同时,也存在一些问题:单车的分布很不均匀。比如在早高峰的时候,一些地铁口往往聚集着大量的单车,而到了晚高峰却很难找到一辆单车了。那么如何解决共享单车分布不均匀的问题呢?目前,共享单车…

DevOps系列文章 之 SnakeYAML解析与序列化YAML

1、简述 如何使用SnakeYAML库将YAML文档转换为Java对象&#xff0c;以及JAVA对象如何序列化为YAML文档。 在DevOps平台系统中是基础的能力支持&#xff0c;不管是spring boot 的配置还是K8S 资源清单yaml 2、项目设置 要在项目中使用SnakeYAML&#xff0c;需要添加Maven依赖…