如何在 Spring Boot 中使用定时任务

news2024/12/24 2:28:18

如何在 Spring Boot 中使用定时任务

引言

在实际的项目中,我们经常需要编写定时任务来执行一些周期性的任务,比如定时备份数据库、定时发送邮件等。在 Spring Boot 中,我们可以使用 Spring 的 Task Execution 和 Scheduling 来实现定时任务。在本文中,我们将介绍如何在 Spring Boot 中使用定时任务。

在这里插入图片描述

创建 Spring Boot 项目

首先,我们需要创建一个 Spring Boot 项目。可以使用 Spring Initializr 来快速创建一个 Spring Boot 项目。在创建项目时,选择 Web 和 Thymeleaf 依赖,如下图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EkowdRIf-1687746954797)(null)]

创建项目后,我们可以在 pom.xml 文件中看到 Spring Boot 的 Web 和 Thymeleaf 依赖:

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

创建定时任务

在 Spring Boot 中,我们可以使用 @Scheduled 注解来创建定时任务。以下是一个简单的定时任务:

@Component
public class DemoTask {
 
    @Scheduled(fixedDelay = 5000)
    public void run() {
        System.out.println("定时任务执行了!");
    }
}

在上面的代码中,我们创建了一个 DemoTask 类,并使用 @Component 注解将它注册到 Spring 容器中。使用 @Scheduled 注解来指定定时任务的执行时间。在这个例子中,我们使用 fixedDelay 属性来指定任务的执行间隔时间为 5000 毫秒。

配置定时任务

在 Spring Boot 中,我们可以使用 @EnableScheduling 注解来启用定时任务。在启用定时任务之前,我们需要配置一个 TaskExecutor 来执行任务。以下是一个简单的配置类:

@Configuration
@EnableScheduling
public class TaskConfig {
 
    @Bean
    public TaskExecutor taskExecutor() {
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        executor.setCorePoolSize(10);
        executor.setMaxPoolSize(20);
        executor.setQueueCapacity(100);
        executor.setThreadNamePrefix("taskExecutor-");
        executor.initialize();
        return executor;
    }
}

在上面的代码中,我们创建了一个 TaskConfig 类,并使用 @Configuration 注解将它标识为配置类。使用 @EnableScheduling 注解来启用定时任务。在 taskExecutor 方法中,我们创建了一个 ThreadPoolTaskExecutor 来执行任务,并设置了核心线程数、最大线程数、队列容量、线程名称前缀等属性。

使用 Cron 表达式

除了使用 fixedDelay 属性来指定任务的执行间隔时间,我们还可以使用 Cron 表达式来指定定时任务的执行时间。Cron 表达式是一个字符串,包含了 6 或 7 个时间字段,表示定时任务的执行时间。以下是一个使用 Cron 表达式的定时任务:

@Component
public class CronTask {
 
    @Scheduled(cron = "0 0 0 * * ?")
    public void run() {
        System.out.println("定时任务执行了!");
    }
}

在上面的代码中,我们使用 @Scheduled 注解和 cron 属性来指定定时任务的执行时间。在这个例子中,我们使用 Cron 表达式 “0 0 0 * * ?” 来表示任务在每天的 0 点执行。

总结

在本文中,我们介绍了如何在 Spring Boot 中使用定时任务。我们创建了一个定时任务,并使用 @EnableScheduling 注解启用了定时任务。我们还使用了 ThreadPoolTaskExecutor 来执行任务,并使用 Cron 表达式来指定任务的执行时间。Spring Boot 的定时任务功能非常方便,可以帮助我们快速地实现周期性任务的执行。

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

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

相关文章

用BERT做命名实体识别任务

命名实体识别NER任务是NLP的一个常见任务&#xff0c; 它是Named Entity Recognization的简称。 简单地说&#xff0c;就是识别一个句子中的各种 名称实体。 诸如&#xff1a;人名&#xff0c;地名&#xff0c;机构 等。 例如对于下面这句话&#xff1a; 小明对小红说:"你…

佩戴舒适度的蓝牙耳机品牌有哪些?佩戴舒适性蓝牙耳机排行榜推荐

​对于年轻人来说&#xff0c;耳机使用场景丰富&#xff0c;时尚追求度高&#xff0c;喜好的音乐类型也是多种多样&#xff0c;需求侧重也不尽相同。下面我来推荐几款相当不错的蓝牙耳机给大家&#xff0c;总会有喜欢那款&#xff01; 一、南卡OE PRO开放式耳机 南卡OE PRO是国…

带你阅读 Flutter Demo(flutter 保姆级入门教程)

dart、flutter Flutter Demo 解析 - 文章信息 - Author: Jack Lee (jcLee95) Visit me at: https://jclee95.blog.csdn.netEmail: 291148484163.com. Shenzhen ChineAddress of this article:https://blog.csdn.net/qq_28550263/article/details/xxxxxx 【介绍】&#xff1a;本…

RFID技术的革新与应用:连接智能物联网的关键

在日益数字化的时代&#xff0c;物联网&#xff08;IoT&#xff09;技术正迅速发展&#xff0c;并为我们的生活带来了无数的便利。而射频识别&#xff08;RFID&#xff09;技术作为物联网的关键支撑之一&#xff0c;正在推动着智能化、自动化的进程。本文将深入探讨RFID技术的基…

INTERSPEECH 2023论文|基于自监督学习表示的具有持久性口音记忆的口音识别

论文题目&#xff1a; Self-supervised Learning Representation based Accent Recognition with Persistent Accent Memory 作者列表&#xff1a; 李睿&#xff0c;谢志伟&#xff0c;徐海华&#xff0c;彭亦周&#xff0c;刘和鑫&#xff0c;黄浩&#xff0c;Chng Eng Sio…

神州设备IPV6路由综合运用

实训拓扑图 一、基本配置: SW-1: SW-1>ena SW-1#conf SW-1(config)#vlan 10;100 SW-1(config)#int l1 SW-1(config-if-loopback1)#ip add 1.1.1.1 255.255.255.255 SW-1(config-if-loopback1)#ipv6 add 2001:1::1/128 SW-1(config-if-loopback1)#exit

前端系列18集-权限,nginx成功,屏幕分辨率,vue3

vue3.0 使用原生websocket通信 // Websoket连接成功事件const websocketonopen (res: any) > {console.log("WebSocket连接成功", res);};// Websoket接收消息事件const websocketonmessage (res: any) > {console.log("数据", res);};// Websoket…

【从零开始学习C++ | 第二十二篇】C++新增特性(下)

目录 前言&#xff1a; 类型推导&#xff1a; constexpr关键字&#xff1a; 初始化列表&#xff1a; 基于范围的for循环&#xff1a; 智能指针之unique ptr Lambda表达式&#xff1a; 总结&#xff1a; 前言&#xff1a; 本文我们将继续介绍 C 11 新增十大特性的剩余…

解决前端容器不能充满屏幕

解决前端容器不能充满屏幕 px、rpx、em、rem、vw、vh各种像素单位的区别 css3新单位vw、vh、vmin、vmax的使用详解 学习element-UI写管理系统的页面&#xff0c;发现当菜单栏都收缩起来&#xff0c;结果是这样的 红色框是容器里每个板块的布局&#xff0c;但是容器下面却有空白…

如何处理兼容性测试中的变更管理?

如何处理兼容性测试中的变更管理? 在进行软件测试的过程中&#xff0c;兼容性测试是&#xfeff;非常重要的一环。然而&#xff0c;在进行兼容性测试时&#xff0c;由于涉及到不同平台、不同设备的适配问题&#xff0c;可能会出现许多变更管理的情况。这时候&#xff0c;如果没…

阿里企业邮箱收费标准_企业邮箱费用明细表

阿里云企业邮箱收费标准&#xff08;免费版/标准/尊享/集团&#xff09;&#xff0c;2023阿里云企业邮箱收费标准&#xff0c;免费版企业邮箱0元&#xff0c;标准版企业邮箱540元一年&#xff08;原价600元一年&#xff09;&#xff0c;企业邮箱尊享版1400元一年&#xff0c;9折…

4-移动端适配-1

01-移动 Web 基础 谷歌模拟器 模拟移动设备&#xff0c;方便查看页面效果 屏幕分辨率 分类&#xff1a; 物理分辨率&#xff1a;硬件分辨率&#xff08;出厂设置&#xff09;逻辑分辨率&#xff1a;软件 / 驱动设置 结论&#xff1a;制作网页参考 逻辑分辨率 视口 作用&a…

微信小程序项目实例——2048小游戏

今日推荐&#x1f481;‍♂️ 第一次听廖俊涛的歌是他首次出现在明日之子舞台上的那首《谁》 到现在这首歌成了我网易云收藏的十几首歌中的一首&#xff0c;也是听的最多的一首 怎么形容呢&#x1f914;算不上惊艳&#xff0c;却百听不厌&#x1f442; &#x1f52e;&#x1…

直播美颜SDK的商业化应用:开发者需要注意的关键问题

直播美颜SDK是当前直播行业中十分热门的技术之一&#xff0c;它可以为直播平台提供高质量的美颜效果&#xff0c;提升直播用户的使用体验和观看体验。随着直播市场的不断扩大和竞争的加剧&#xff0c;越来越多的直播平台开始使用美颜SDK以提高自身的用户黏性和用户体验。那么&a…

二叉树OJ题:LeetCode--100.相同的树

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下LeetCode中第100道二叉树OJ题&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; 数据结构与算法专栏&#xff1a;数据结构与算法 个 人…

脑机接口:运动想象简介

脑机接口&#xff1a;运动想象简介 0. 脑机接口1. 运动想象2. 信号处理2.1 信号采集2.2 信号预处理2.3 特征提取2.4 分类识别 3. EEG波段介绍4. 脑电图电极定位5. 总结 0. 脑机接口 脑机接口&#xff08;Brain-Computer Interface&#xff0c; BCI&#xff09;&#xff1a;它是…

MATLAB 之 可视化图形用户界面设计

这里写目录标题 一、可视化图形用户界面设计1. 图形用户界面设计窗口1.1 图形用户界面设计模板1.2 图形用户界面设计窗口 2. 可视化图形用户界面设计工具1.1 对象属性检查器2.2 菜单编辑器2.3 工具栏编辑器2.4 对齐对象工具2.5 对象浏览器2.6 Tab 键顺序编辑器 3. 可视化图形用…

途乐证券|股票XR是什么意思?买股票为什么赚不到钱?

股票市场上有时会出现一些股票在其名称前加上英文字母的情况&#xff0c;比如XD、XR等。那么股票XR是什么意思&#xff1f;买股票为什么赚不到钱&#xff1f;途乐证券为大家准备了相关内容&#xff0c;以供参考。 股票XR是什么意思&#xff1f; 股票名称中带有XR是表示股票在进…

yolov5-cls部署之onnx导出

本文旨在介绍说明yolov5自带的分类如何导出动态的batch的onnx。其中输出两种形式&#xff1a; 形式&#xff08;1&#xff09;&#xff1a;导出带softmax映射到概率的 形式&#xff08;2&#xff09;&#xff1a;导出不带softmax的&#xff0c;这个也是官方默认的方式 一、动…

连接服务器,再连接VSCode

一、 创建账号&#xff0c;查找公钥 通过命令窗口 a. 打开你的 git bash 窗口 b. 进入 .ssh 目录&#xff1a;cd ~/.ssh c. 找到 id_rsa.pub 文件&#xff1a;ls d. 查看公钥&#xff1a;cat id_rsa.pub 或者 vim id_rsa.pub 查看本机 ssh 公钥&#xff0c;生成公钥 二、用…