SpringBoot 使用定时任务(SpringTask)

news2025/2/4 1:05:46

Spring3.0以后自带的task,可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多。

使用步骤:

1.导入坐标

在spring-boot-starter-web坐标中,就包含了SpringTask,所以一般的Web项目都包含了。

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

2.在启动类中开启任务调度

package com.***;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;

@EnableScheduling   //  开启任务调度
@SpringBootApplication
public class Application {
   public static void main(String[] args) {
      SpringApplication.run(Application.class, args);
   }
}

3.编写自定义任务类 

package com.***.task;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.text.SimpleDateFormat;
import java.util.Date;

@Component
public class MyTask {
    //  定时任务方法,指定什么时候触发 这里是每五秒触发一次
    @Scheduled(cron = "0/5 * * * * ?")
    public void TimeTask() {
        System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + " 执行任务");
    }
}

在任务类中编写需要定时执行的方法即可。在方法上面配置Cron表达式,控制执行的频率。 

4.Cron表达式

Cron 表达式是一种用于指定定时任务执行时间的字符串表达式。它由 6 个字段组成,分别表示秒、分钟、小时、天数、月份和星期几。每个字段都可以使用特定的符号来指定时间范围或间隔。

                ┌──────────── [可选] 秒 (0 - 59)
                | ┌────────── 分钟 (0 - 59)
                | | ┌──────── 小时 (0 - 23)
                | | | ┌────── 天数 (1 - 31)
                | | | | ┌──── 月份 (1 - 12) OR jan,feb,mar,apr ...
                | | | | | ┌── 星期几 (0 - 6, 星期天 = 0) OR sun,mon ...
                | | | | | |
                * * * * * * 命令
                

除了基本的数字范围外,Cron 表达式还支持一些特殊符号和字符:

  • 星号(*):表示匹配任意值。例如,* 在分钟字段中表示每分钟都执行。
  • 逗号(,):用于分隔多个值。例如,1,3,5 在小时字段中表示 1 点、3 点和 5 点执行。
  • 斜线(/):用于指定间隔值。例如,*/5 在分钟字段中表示每 5 分钟执行一次。
  • 连字符(-):用于指定范围。例如,10-20 在日期字段中表示从 10 号到 20 号。
  • 问号(?):仅用于日期和星期几字段,表示不指定具体值。通常用于避免冲突。

以下是一些示例 Cron 表达式:

  • 0 0 12 * * ?:每天中午 12 点执行。
  • 0 0/5 * * * ?:每 5 分钟执行一次。
  • 0 0 8-18 ? * MON-FRI:周一至周五的 8 点到 18 点之间每小时执行一次。

Cron 表达式非常灵活,可以满足各种定时任务的需求。但需要注意的是,Cron 表达式只能表示固定的时间点,无法处理复杂的时间逻辑。如果需要更复杂的定时任务调度,可能需要借助专门的调度框架或库。

在线Cron表达式生成器

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

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

相关文章

fastadmin导入excel并对导入数据处理

情景描述 fastadmin有自带的导入功能&#xff0c;但是不好用&#xff0c;它要求你的表格标题必须跟数据表的备注一致&#xff0c;而且拿到的数据是直接插入数据表&#xff0c;我们无法获取想要的数据并对数据进行处理&#xff1b;而且有时候我们只是想要单纯的读取文件功能&…

HTTP中传输协议的数据格式

HTTP 概述&#xff1a;超文本传输协议(Hyper Text Transfer Protocol) 传输协议&#xff1a;定义了客户端和服务器通信时&#xff0c;发送数据的格式 客户端和服务器端交互&#xff1a;客户端向服务器端发送请求&#xff0c;服务器端向客户端响应请求 HTTP特点&#xff1a;…

Aspose.Words简单使用

Aspose.Words简单使用 简介 Aspose.Words for Java 是一个用于处理和操作 Word 文档的强大 Java 库。本文档提供了使用 Maven 在你的 Java 项目中集成和使用 Aspose.Words 的简单步骤。 安装步骤 1. 配置 Aspose Maven 仓库 在你的 pom.xml 文件中添加以下配置&#xff0c…

python中的异步实践与tornado应用

最近项目中由于在python3中使用tornado,之前也有用过&#xff0c;是在python2中&#xff0c;由于对于协程理解不是很透彻&#xff0c;只是套用官方文档中的写法&#xff0c;最近比较细致的看了下协程的用法&#xff0c;也将tornado在python3中异步的实践了一下。 异步基础 要…

求n的k次方

递归法&#xff1a; #include<stdio.h> int mi(int n, int k) {if (k 1) //如果是1次方{return n; //返回n的1次方&#xff08;也就是n&#xff09;}else{return n * mi(n, k - 1); //n*n的k-1次方} } int main() {int n 0, k 0, sum 0;printf("请输入n值…

你和年薪百万检验工程师之间差了一个TA?

在研发周期紧、并行项目数直线上涨的背景下 试制样品测试-检核报告撰写-优化决策分析&#xff0c; 每一步都让工程师苦之久矣。 缺乏体系管理 工程师群里被猛的崩溃时刻 测试主管&#xff1a;检测方案依据的行业规范文件是哪个&#xff1f;测试少了这个参数&#xff0c;检测…

视频融合平台EasyCVR推流成功但平台显示不在线是什么原因?

TSINGSEE青犀视频监控汇聚平台EasyCVR可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能力&…

如何改进YOLOv5主干网络

D:\yolov5-master\models目录下新建mobilevit.py文件夹 代码内容&#xff1a; import torch import torch.nn as nn from einops import rearrange def conv_1x1_bn(inp, oup):return nn.Sequential(nn.Conv2d(inp, oup, 1, 1, 0, biasFalse),nn.BatchNorm2d(oup),nn.SiLU()) …

Python库Bleach:保护应用免受XSS攻击

Python库Bleach&#xff1a;保护应用免受XSS攻击 在当今的网络环境中&#xff0c;跨站脚本攻击&#xff08;XSS&#xff09;是一种常见而严重的安全威胁。为了保护我们的应用程序免受XSS攻击&#xff0c;我们可以使用Python库Bleach。本文将介绍Bleach库的基本概念、功能和用法…

物联网浏览器(IoTBrowser)-Modbus协议集成和测试

Modbus协议在应用中一般用来与PLC或者其他硬件设备通讯&#xff0c;Modbus集成到IoTBrowser使用串口插件模式开发&#xff0c;不同的是采用命令函数&#xff0c;具体可以参考前面几篇文章。目前示例实现了Modbus-Rtu和Modbus-Tcp两种&#xff0c;通过js可以与Modbus进行通讯控制…

其他发现:开源数据可视化分析工具DataEase介绍文档

一、 简介 DataEase 是开源的数据可视化分析工具&#xff0c;帮助用户快速分析数据并洞察业务趋势&#xff0c;从而实现业务的改进与优化。DataEase 支持丰富的数据源连接&#xff0c;能够通过拖拉拽方式快速制作图表&#xff0c;并可以方便地与他人分享。 二、 优势 1、 开…

计算机视觉实战项目4(单目测距与测速+摔倒检测+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A_路径规划+行人车辆计数+动物识别等)

基于YOLOv5的无人机视频检测与计数系统 摘要&#xff1a; 无人机技术的快速发展和广泛应用给社会带来了巨大的便利&#xff0c;但也带来了一系列的安全隐患。为了实现对无人机的有效管理和监控&#xff0c;本文提出了一种基于YOLOv5的无人机视频检测与计数系统。该系统通过使用…

UE4 C++ 数据表

//添加使用DataTable需要的头文件 #include "Engine/DataTable.h"//基于结构体变量类型&#xff0c;创建数据表DataTable类型 USTRUCT(BlueprintType) struct FMyDataTableStruct : public FTableRowBase //把结构体变量公开到数据表类型 {GENERATED_BODY() //必须添…

前后端分离,RSA加密传输方案

1.原理 RSA是一种非对称加密算法。通过生成密钥对&#xff0c;用公钥加密&#xff0c;用私钥解密。对于前后端分离的项目&#xff0c;让前端获取到公钥对敏感数据加密&#xff0c;发送到后端&#xff0c;后端用私钥对加密后的数据进行解密即可。 2.实现 RSA工具类&#xff1…

MQ回顾之rabbitmq速通

rabbitMQ相对来说功能比较完善&#xff0c;吞吐量会低一点。 持续更新…… 安装 docker 测试选择docker安装 官方安装操作 1、docker pull rabbitmq:latest 2、docker run -d --hostname my-rabbit --name some-rabbit -p 15672:15672 -p 5672:5672 rabbitmq 3、docker…

C/C++ C++入门

个人主页&#xff1a;仍有未知等待探索-CSDN博客 专题分栏&#xff1a;C_仍有未知等待探索的博客-CSDN博客 目录 一、C关键字 二、命名空间 1、区别 1. C语言 ​编辑 2. C 2、命名空间定义 3、命名空间的使用 三、C输入&输出 四、缺省参数 五、函数重载 六、引用 …

80.如何评估一台服务器能承受的最大TCP连接数

文章目录 一、一个服务端进程最多能支持多少条 TCP 连接&#xff1f;二、一台服务器最大最多能支持多少条 TCP 连接&#xff1f;三、总结 一个服务端进程最大能支持多少条 TCP 连接&#xff1f; 一台服务器最大能支持多少条 TCP 连接&#xff1f; 很多朋友可能第一反应就是端…

【RT-DETR有效改进】利用YOLO-MS的MSBlock模块改进ResNet中的Bottleneck(RT-DETR深度改进)

👑欢迎大家订阅本专栏,一起学习RT-DETR👑 一、本文介绍 本文给大家带来的改进机制是利用YOLO-MS提出的一种针对于实时目标检测的MSBlock模块(其其实不能算是Conv但是其应该是一整个模块),我们将其用于替换我们ResNet中Basic组合出一种新的结构,来替换我们网络中的…

Spring:JDBCTemplate 的源码分析

一&#xff1a;JdbcTemplate的简介 JdbcTemplate 是 Spring Template设置模式中的一员。类似的还有 TransactionTemplate、 MongoTemplate 等。通过 JdbcTemplate 我们可以使得 Spring 访问数据库的过程简单化。 二&#xff1a;执行SQL语句的方法 1&#xff1a;在JdbcTempla…

智能末世战争之机器人的反击

在遥远的未来&#xff0c;地球陷入了一场空前的战争。这场战争不同于以往的任何战争&#xff0c;因为这是由人工智能和机器人主导的战争。在战争爆发之前&#xff0c;人类一直依赖AI和机器人来提高生产效率和生活质量。然而&#xff0c;随着AI技术的飞速发展&#xff0c;机器人…