使用SpringBoot实现定时任务

在Spring Boot中实现定时任务非常简单,主要通过使用@Scheduled注解。Spring Boot的@Scheduled注解提供了一种简单的、声明式的方式来定义定时任务。这些任务可以按照指定的时间间隔执行,无需手动管理线程或定时器。下面是如何使用Spring Boot来实现定时任务的步骤:

1. 启用定时任务

首先,需要在Spring Boot的主类或者配置类上添加@EnableScheduling注解,以启用定时任务的支持。

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);}
}

2. 创建定时任务

然后,创建一个包含定时任务的方法,并用@Scheduled注解标记。@Scheduled注解可以配置多种参数,如fixedRatefixedDelaycron等,以满足不同的定时需求。

  • fixedRate:固定速率执行,指定从上一个任务开始的时间间隔。
  • fixedDelay:固定延迟执行,指定从上一个任务完成的时间间隔。
  • cron:Cron表达式,提供了更强大的定时计划能力。
示例代码
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;@Component
public class ScheduledTasks {// 每5秒执行一次@Scheduled(fixedRate = 5000)public void taskWithFixedRate() {System.out.println("Fixed Rate Task :: Execution Time - " + System.currentTimeMillis() / 1000);}// 上一个任务完成后5秒再执行@Scheduled(fixedDelay = 5000)public void taskWithFixedDelay() {System.out.println("Fixed Delay Task :: Execution Time - " + System.currentTimeMillis() / 1000);try {Thread.sleep(2000); // 模拟执行时间} catch (InterruptedException e) {e.printStackTrace();}}// 使用Cron表达式定时执行@Scheduled(cron = "0/15 * * * * ?")public void taskWithCronExpression() {System.out.println("Cron Expression Task :: Execution Time - " + System.currentTimeMillis() / 1000);}
}

3. 注意事项

  • 确保@Scheduled注解的方法具有void返回类型,并且不接受任何参数。
  • 默认情况下,所有的@Scheduled任务都在Spring创建的大小为1的默认线程池中执行。如果有多个任务,可能会因为一个任务的延迟影响到其他任务的执行。可以通过配置来自定义线程池。

通过这种方式,你可以在Spring Boot应用程序中轻松地实现定时任务。

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

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

相关文章

linux ,Windows部署

Linux部署 准备好虚拟机 连接好查看版本:java -version安装jdk 解压命令:tar -zxvf 加jdk的压缩文件名cd /etc 在编辑vim profile文件 在最底下写入: export JAVA_HOME/root/soft/jdk1.8.0_151(跟自己的jdk保持一致&#xff0…

python 之pymongo的CURD

文章目录 pymongo的基本操作前言新增1、新增一条记录2、新增多条记录3、自定义_id 的新增 更新1、更新一条记录2、更新多条记录 删除删除一条记录删除多条记录 查询条件查询根据运算符查询根据范围查找根据正则表达式查询投影排序分页查询 管道聚合 pymongo的基本操作 前言 前…

SpringSecurity 快速入门

文章目录 1. 认证授权概述1.1 认证授权概念1.1.1 认证1.1.2 授权 1.2 权限数据模型1.3 RBAC权限模型1.3.1 介绍1.3.2 基于角色访问控制1.3.3 基于资源访问控制 1.4 常见认证方式1.4.1 Cookie-Session1.4.2 jwt令牌无状态认证 1.5 技术实现 2. SpringSecurity入门2.1 介绍2.2 入…

突破编程_C++_设计模式(迭代模式)

1 迭代模式的基本概念 在 C 中,迭代模式是一种常见的设计模式,它用于遍历或处理集合中的元素。迭代模式允许程序员在不了解集合内部表示的情况下,以一种统一和一致的方式来访问集合中的元素。这种模式的核心是迭代器对象,它封装了…

「CISP题库精讲」CISP题库习题解析精讲20道

前言 本篇主要对CISP教材第九章《计算环境安全》的一些习题进行讲解,包括20道题,这里只是部分习题,针对第九章可能会多写几章的内容,如果我发布的这些习题里面没有你想找的那道题,你也可以直接私信我,我加…

「连载」边缘计算(二十九)03-11:边缘部分源码(源码分析篇)

(接上篇) EdgeCore之matamanager 前面对EdgeCore组件的edged、devicetwin、edgehub、eventbus功能模块进行了分析,本节对EdgeCore组件的另一个功能模块metamanager进行剖析。metamanager作为EdgeCore中的edged模块与edgehub模块进行交互的桥…

求根节点到叶节点数字之和

题目链接 求根节点到叶节点数字之和 题目描述 注意点 树中节点的数目在范围 [1, 1000] 内0 < Node.val < 9树的深度不超过10 解答思路 深度优先遍历计算从根节点到叶子节点组成的所有数字&#xff08;每向下一层乘以10&#xff09;&#xff0c;再计算所有的数字之和…

中小型生产企业工业数据采集分析平台 规划生产流程

工业数据采集分析平台是一款优秀的工控自动化软件&#xff0c;可以用于数据采集、实时监测和过程控制、数据传输、系统联动、远程监控等多种应用&#xff0c;数据采集平台通过对设备运行状态及相关参数监视实现保证每个环节都能按照既定方案进行&#xff0c;同时缩短非正常停机…

shiro整合thymeleaf(接上一篇抛出的问题)

在上一篇末尾&#xff0c;讲到如何实现不同身份的用户&#xff0c;有不同的权限&#xff0c;从而看到不同的页面&#xff0c;下面我们就来实现下这个功能 1.导入依赖 <!--shiro整合thymeleaf--><dependency><groupId>com.github.theborakompanioni</group…

python(ogr)处理geojson为本地shp文件

前言 本次所利用的geojson数据来自https://geo.datav.aliyun.com/areas_v3/bound/410000_full.json &#xff0c;如果觉得下方代码看起来不方便&#xff0c;可以来GitHub上来看&#xff0c;在这上面还有一些辅助内容便于理解 GISpjd/GIS-union-Python (github.com)https://gi…

14.WEB渗透测试--Kali Linux(二)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;13.WEB渗透测试--Kali Linux&#xff08;一&#xff09;-CSDN博客 netcat简介内容:13.WE…

精品基于Springboot的体育用品租赁租用管理系统的设计与实现

《[含文档PPT源码等]精品基于Springboot的体育用品管理系统的设计与实现[包运行成功]》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功&#xff01; 软件开发环境及开发工具&#xff1a; Java——涉及技术&#xff1a; 前端使用技术&…

c# DbHelper的封装

c# DbHelper的封装 基于ADO.NET框架&#xff0c;封装了适用于多个关系型数据库的DbHelper。通过简洁明了的代码&#xff0c;实现了对各种数据库的高效操作。 public class DbHelper{private readonly DataBase _dataBase;public DbHelper(DataBase dataBase){_dataBase data…

SpringCloud-实现基于RabbitMQ的消息队列

消息队列是现代分布式系统中常用的通信机制&#xff0c;用于在不同的服务之间传递消息。在Spring Cloud框架中&#xff0c;我们可以利用RabbitMQ实现强大而可靠的消息队列系统。本篇博客将详细介绍如何在Spring Cloud项目中集成RabbitMQ&#xff0c;并创建一个简单的消息队列。…

【Kotlin】类和对象

1 前言 Kotlin 是面向对象编程语言&#xff0c;与 Java 语言类似&#xff0c;都有类、对象、属性、构造函数、成员函数&#xff0c;都有封装、继承、多态三大特性&#xff0c;不同点如下。 Java 有静态&#xff08;static&#xff09;代码块&#xff0c;Kotlin 没有&#xff1…

Spring AOP常见面试题

目录 一、对于AOP的理解 二、Spring是如何实现AOP的 1、execution表达式 2、annotation 3、基于Spring API&#xff0c;通过xml配置的方式。 4、基于代理实现 三、Spring AOP的实现原理 四、Spring是如何选择使用哪种动态代理 1、Spring Framework 2、Spring Boot 五…

博士推荐 | 纤维与聚合物科学博士,功能性纺织品研发主管

编辑 / 木子 审核 / 朝阳 伟骅英才 伟骅英才致力于以大数据、区块链、AI人工智能等前沿技术打造开放的人力资本生态&#xff0c;用科技解决职业领域问题&#xff0c;提升行业数字化服务水平&#xff0c;提供创新型的产业与人才一体化服务的人力资源解决方案和示范平台&#x…

二分查找【详解】

本期介绍&#x1f356; 主要介绍&#xff1a;二分查找的简单思路&#xff0c;为什么必须在有序的前提下才能使用二分查找&#xff0c;该怎么用C程序来实现二分查找&#xff0c;二分查找的局限性&#x1f440;。 文章目录 1. 题目2. 思路3. 前提条件4. 编写程序 1. 题目 在一个有…

选择性遗忘可以帮助人工智能学得更好?

最近&#xff0c;一些计算机科学家创建了一种更灵活、更灵巧的机器学习模型。诀窍在于&#xff1a;它必须定期忘记它所知道的信息。虽然这种新方法不会取代支撑最大应用程序的庞大模型&#xff0c;但它能揭示这些程序如何理解语言的更多信息。 &#xff08;PS&#xff1a;如果…

日常007:alias给长命令起个简短的别名

alias 命令可以给那些太长的命令起一个简短的别名。便于记忆&#xff0c;提高输入效率。 用法和示例 1. 创建别名 创建别名&#xff0c;使用语法alias new_commandoriginal_command&#xff0c;例如 alias llls -lF使用别名 $ ll total 32 -rw-r--r-- 1 soulio soulio 1…