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
英文地址,請注明出處:http://en.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;處理多模態嵌…