Spring Task快速上手

一. 介绍

Spring Task 是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑,无需依赖额外组件(如 Quartz),配置简单、使用便捷,适合处理周期性执行的任务(如定时备份数据、定时发送报表、定时清理缓存等)。

1. 核心特点:

  1. 轻量级:属于 Spring 框架自带模块,无需额外引入依赖(Spring 3.0+ 已内置)。
  2. 易用性:通过注解(如 @Scheduled)即可快速配置定时任务,无需复杂 XML 配置。
  3. 支持多种调度策略:可按固定速率、固定延迟、Cron 表达式等方式触发任务。
  4. 与 Spring 生态无缝集成:能直接注入 Spring 容器中的 Bean,方便使用业务逻辑组件。

2.应用场景:

  1. 每日凌晨凌晨 2 点自动备份数据库
  2. 每小时清理过期缓存数据
  3. 每天 8 点推送用户消息通知
  4. 每周一生成上周销售报表
  5. 每 10 分钟检查并提醒即将超时的订单
  6. 每月 1 日删除 3 个月前的无效订单
  7. 每 5 分钟监控服务器运行状态
  8. 每天凌晨预热热门商品缓存数据

二. corn表达式

要使用Spring Task,必须学会corn表达式。

Cron 表达式是用于定义定时任务执行时间的字符串格式,由 6 或 7 个空格分隔的字段组成,分别代表不同的时间单位,基本格式如下(从左到右):

秒 分 时 日 月 周 [年](年是可选字段,通常省略)

常用特殊字符含义

  • *:匹配所有值(如 “分” 字段为 * 表示每分钟)
  • ?:仅用于 “日” 和 “周”,表示不指定具体值(避免两者冲突)
  • /:表示递增(如 0/5 表示从 0 开始,每 5 单位执行一次)
  • -:表示范围(如 10-12 表示 10 到 12)
  • ,:表示多个值(如 MON,WED,FRI 表示周一、三、五)

常见示例

  1. 0 0 2 * * ? → 每天凌晨 2 点执行
  2. 0 0 8,18 * * ? → 每天 8 点和 18 点执行
  3. 0 0/30 9-17 * * ? → 工作日 9 点到 17 点,每 30 分钟执行
  4. 0 0 12 ? * WED → 每周三中午 12 点执行
  5. 0 0 1 1 * ? → 每月 1 日凌晨 1 点执行
  6. 0/5 * * * * ? → 每 5 秒执行一次
  7. 0 30 10 ? * MON-FRI → 工作日上午 10 点 30 分执行

三. 使用步骤

1. 导入maven坐标

Spring Task 是 Spring Framework 核心模块的一部分,不需要单独引入额外的 Maven 坐标。它包含在 Spring 核心依赖中,只要项目中引入了 Spring Context 相关依赖(几乎所有 Spring 项目都会包含),就可以直接使用 Spring Task 的功能。

最常见的引入方式是通过 Spring Boot starter 间接包含,例如:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><!-- 版本号通常由 Spring Boot 父工程统一管理 -->
</dependency>

2. 在启动类上添加注解@EnableScheduling开启任务调度

@SpringBootApplication
@Slf4j
@EnableScheduling//开启任务调度
public class SkyApplication {public static void main(String[] args) {SpringApplication.run(SkyApplication.class, args);log.info("server started");}
}

3. 自定义定时任务类

这里写一个简单的例子:

/*** 自定义定时任务类*/
@Component
@Slf4j
public class Mytask {/*** 定时任务 每五秒执行一次*/@Scheduled(cron = "0/5 * * * * ?")public void task(){log.info("定时任务开始执行:{}", new Date());}
}

注解:

  • @Component:将该类注册到 Spring 容器中,使其成为被管理的 Bean。
  • @Slf4j:Lombok 提供的注解,自动生成日志对象 log,用于打印日志。
  • @Scheduled(cron = "0/5 * * * * ?"):核心注解,通过 Cron 表达式 0/5 * * * * ? 指定任务执行规则

方法task:任务执行的具体逻辑,可以将这里替换为需要定时处理的业务

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

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

相关文章

函数(2)

6.定义函数的终极绝杀思路&#xff1a;三个问题&#xff1a;1.我定义函数&#xff0c;是为了干什么事情 函数体、2.我干完这件事&#xff0c;需要什么才能完成 形参3.我干完了&#xff0c;调用处是否需要继续使用 返回值类型需要继续使用 必须写不需要返回 void小程序#include …

BGP路由协议(一):基本概念

###BGP概述 BGP的版本&#xff1a; BGP-1 RFC1105BGP-2 RFC1163BGP-3 RFC1267BGP-4 RFC1771 1994年BGP-4 RFC4271 2006年 AS Autonomous System 自治系统&#xff1a;由一个单一的机构或者组织所管理的一系列IP网络及其设备所构成的集合 根据工作范围的不同&#xff0c;动态路…

mit6.031 2023spring 软件构造 笔记 Testing

当你编码时&#xff0c;目标是使程序正常工作。 但作为测试设计者&#xff0c;你希望让它失败。 这是一个微妙但重要的区别。 为什么软件测试很难&#xff1f; 做不到十分详尽&#xff1a;测试一个 32 位浮点乘法运算 。有 2^64 个测试用例&#xff01;随机或统计测试效果差&am…

【Unity开发】Unity核心学习(三)

四、三维模型导入相关设置 1、Model模型页签&#xff08;1&#xff09;场景相关&#xff08;2&#xff09;网格相关&#xff08;3&#xff09;几何体相关2、Rig操纵&#xff08;骨骼&#xff09;页签 &#xff08;1&#xff09;面板基础信息&#xff08;i&#xff09;None&…

C#语言入门详解(17)字段、属性、索引器、常量

C#语言入门详解&#xff08;17&#xff09;字段、属性、索引器、常量前言一、字段 Field二、属性三、索引器四、常量内容来自刘铁猛C#语言入门详解课程。 参考文档&#xff1a;CSharp language specification 5.0 中文版 前言 类的成员是静态成员 (static member) 或者实例成…

Total PDF Converter多功能 PDF 批量转换工具,无水印 + 高效处理指南

在办公场景中&#xff0c;PDF 格式的 “不可编辑性” 常成为效率瓶颈 —— 从提取文字到格式转换&#xff0c;从批量处理到文档加密&#xff0c;往往需要多款工具协同。Total PDF Converter 破解专业版作为一站式 PDF 解决方案&#xff0c;不仅支持 11 种主流格式转换&#xff…

[Windows] WPS官宣 64位正式版(12.1.0.22525)全新发布!

[Windows] WPS官宣 64位正式版 链接&#xff1a;https://pan.xunlei.com/s/VOYepABmXVfXukzlPdp8SKruA1?pwdeqku# 自2024年5月&#xff0c;WPS 64位版本在WPS社区发布第一个内测体验安装包以来&#xff0c;在近一年多的时间里&#xff0c;经过超过3万名WPS体验者参与版本测试…

WinExec

函数原型&#xff1a; __drv_preferredFunction("CreateProcess","Deprecated. See MSDN for details") WINBASEAPI UINT WINAPI WinExec(__in LPCSTR lpCmdLine,__in UINT uCmdShow); preferred : 更好的 __drv_preferredFunction("CreateProcess…

基于GA遗传优化的双向LSTM融合多头注意力(BiLSTM-MATT)时间序列预测算法matlab仿真

目录 1.前言 2.算法运行效果图预览 3.算法运行软件版本 4.部分核心程序 5.算法仿真参数 6.算法理论概述 7.参考文献 8.算法完整程序工程 1.前言 时间序列预测是机器学习领域的重要任务&#xff0c;广泛应用于气象预报、金融走势分析、工业设备故障预警等场景。传统时间…

Multi-Head RAG: Solving Multi-Aspect Problems with LLMs

以下是对论文《Multi-Head RAG: Solving Multi-Aspect Problems with LLMs》的全面解析&#xff0c;从核心问题、方法创新到实验验证进行系统性阐述&#xff1a;​​一、问题背景&#xff1a;传统RAG的局限性​​传统检索增强生成&#xff08;RAG&#xff09;在处理​​多维度复…

Jenkins 全方位指南:安装、配置、部署与实战应用(含图解)

一、Jenkins 安装 1.1 系统要求 基础环境&#xff1a;Java 8 或 Java 11&#xff08;推荐&#xff09;、至少 2GB 内存、10GB 以上磁盘空间 支持系统&#xff1a;Windows、Linux&#xff08;Ubuntu/CentOS&#xff09;、macOS 网络端口&#xff1a;默认使用 8080 端口&…

以国产IoTDB为代表的主流时序数据库架构与性能深度选型评测

> &#x1f4a1; 原创经验总结&#xff0c;禁止AI洗稿&#xff01;转载需授权 > 声明&#xff1a;本文所有观点均基于多个领域的真实项目落地经验总结&#xff0c;数据说话&#xff0c;拒绝空谈&#xff01; 目录 引言&#xff1a;时序数据库选型的“下半场” 一、维…

7.2elementplus的表单布局与模式

基础表单<template><el-form ref"ruleFormRef" :model"form" :rules"rules" label-width"100px"><el-form-item label"用户名" prop"username"><el-input v-model"form.username"…

PyTorch实战(3)——PyTorch vs. TensorFlow详解

PyTorch实战&#xff08;3&#xff09;——PyTorch vs. TensorFlow详解0. 前言1. 张量2. PyTorch 模块2.1 torch.nn2.2 torch.optim2.3 torch.utils.data3. 使用 PyTorch 训练神经网络小结系列链接0. 前言 PyTorch 是一个基于 Torch 库的 Python 机器学习库&#xff0c;广泛用…

在win服务器部署vue+springboot + Maven前端后端流程详解,含ip端口讲解

代码打包与基本配置 首先配置一台win系统服务器&#xff0c;开放你前端和后端运行的端口&#xff0c;如80和8080 前端打包 前端使用vue3&#xff0c;在打包前修改项目配置文件&#xff0c;我使用的是vite所以是vite.config.js。 import { defineConfig } from vite import …

Springcloud-----Nacos

一、Nacos的安装 Nacos是阿里推出的一种注册中心组件&#xff0c;并且已经开源&#xff0c;目前是国内最为流行的注册中心组件。下面我们来了解一下如何安装并启动Nacos。 Nacos是一个独立的项目&#xff0c;我们可以去GitHub上下载其压缩包来使用&#xff0c;地址如下&#x…

腾讯云重保流程详解:从预案到复盘的全周期安全防护

摘要 腾讯云针对国家级重大活动&#xff08;如进博会、冬奥会等&#xff09;提供的网络安全保障服务&#xff08;重保&#xff09;是一套系统化的主动防御体系。本文从“事前准备”“事中响应”“事后复盘”三个核心阶段出发&#xff0c;结合民生银行等典型用户的实战案例&…

单表查询-group by rollup优化

1、group by rollup基本用法 我们有时候在项目上看到group by rollup用法&#xff0c;其实就是对group by分组进行合计。 下面看一下例子 select count(1),c3 from t1 group by rollup(c3); 计划从计划中解读亦是如此&#xff0c;另外可以从结果上进行分析第21行的count其实就是…

云网络(参考自腾讯云计算工程师认证)

计算机网络&#xff1a;OSI七层模型&#xff1a; 应用层&#xff1a;负责处理网络应用程序之间的通信、 表示层&#xff1a;负责数据的格式化和加密、 会话层&#xff1a;负责建立、管理和终止会话、 传输层&#xff1a;负责端到端的可靠传输、 网络层&#xff1a;负责数据的路…

【MLLM】多模态理解Ovis2.5模型和训练流程(更新中)

note 模型架构&#xff1a;延续 Ovis 系列创新的结构化嵌入对齐设计。 Ovis2.5 由三大组件构成&#xff1a;动态分辨率 ViT 高效提取视觉特征&#xff0c;Ovis 视觉词表模块实现视觉与文本嵌入的结构对齐&#xff0c;最后由强大的 Qwen3 作为语言基座&#xff0c;处理多模态嵌…