SpringTas定時任務使用詳解

文章目錄

  • Spring Task概述
  • 1、環境配置
  • 2.注解實現定時任務
  • 2.注解實現定時任務
  • 4. cron表達式詳解:

Spring Task概述

在開發中,我們經常會用到定時任務,而Spring Task 則是Spring提供的定時任務框架。
其它定時任務實現框架又jdk自帶Timer和Quartz,前者功能太簡單不經常用,后者太笨重,使用起來很重。而Spring Task 則是結合了兩者優缺點,同時因為是Spring自帶的,和Spring兼容性特別好,支持xml和注解兩種配置方式。

1、環境配置

在這里插入圖片描述
添加pom.xml依賴:

	<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.4.RELEASE</version></dependency></dependencies>

2.注解實現定時任務

添加定時任務類

@Component
public class TaskJob {private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 定義定時任務的方法public void job1() {System.out.println("任務1:" + simpleDateFormat.format(new Date()));}}

項目結構:
在這里插入圖片描述

添加spring.xml:

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:task="http://www.springframework.org/schema/task"xmlns:bean="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/taskhttp://www.springframework.org/schema/task/spring-task.xsd"><!-- 開啟自動掃描 --><bean:component-scan base-package="com.xxxx"/><!-- 配置定時任務規則 --><task:scheduled-tasks><!-- 可以配置多個定時任務 --><!-- 定時任務1 --><task:scheduled ref="taskJob" method="job1" cron="0/2 * * * * ?"/></task:scheduled-tasks></beans>

測試類:

public class Test {public static void main(String[] args) {ApplicationContext ac = new ClassPathXmlApplicationContext("spring.xml");TaskJob taskJob = (TaskJob) ac.getBean("taskJob");taskJob.job1();}
}

運行結果:

任務1:2025-05-01 13:33:15
任務1:2025-05-01 13:33:16
任務1:2025-05-01 13:33:18
任務1:2025-05-01 13:33:20
任務1:2025-05-01 13:33:22
.......

可以看到每兩秒執行一次。

2.注解實現定時任務

其實就是通過@Scheduled注解實現。

spring.xml配置:

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:task="http://www.springframework.org/schema/task"xmlns:bean="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/taskhttp://www.springframework.org/schema/task/spring-task.xsd"><!-- 開啟自動掃描 --><bean:component-scan base-package="com.xxxx"/><!-- 配置定時任務注解驅動 --><task:annotation-driven/>
</beans>

定時任務類配置:

@Component
public class TaskJob02 {private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");@Scheduled(cron = "0/2 * * * * ?")// 定義定時任務的方法public void job1() {System.out.println("任務1:" + simpleDateFormat.format(new Date()));}
}

測試類內容:

ApplicationContext ac = new ClassPathXmlApplicationContext("spring02.xml");
TaskJob02 taskJob02 = (TaskJob02) ac.getBean("taskJob02");
taskJob02.job1();

運行結果:

任務1:2025-05-01 13:44:27
任務1:2025-05-01 13:44:28
任務1:2025-05-01 13:44:30
任務1:2025-05-01 13:44:32
任務1:2025-05-01 13:44:34
......

4. cron表達式詳解:

Cron表達式是一種用于指定定時任務的時間表達式,常用來指定任務的執行時間、執行頻率和執行間隔。它由6~7個字段組成,分別表示秒、分、時、日期、月份、星期、年份(可省略)。cron 是一個非常靈活和強大的工具,幾乎可以用于任何需要定期執行的任務。

這里有一個可以自動生成cron表達式的網站:

自動生成cron表達式

關于cronExpression 表達式至少有 6 個(也可能是 7 個)由空格分隔的時間元素。從左至右,這些元素的定義如下:

  1. 秒 (0-59)
  2. 分鐘 (0-59)
  3. 小時 (0-23)
  4. 月份中的日期 (1-31)
  5. 月份 (1-12 或 JAN-DEC)
  6. 星期中的日期 (1-7 或 SUN-SAT)
  7. 年份 (1970-2099)
0 0 10,14,16 * * ?每天上午 10 點,下午 2 點和下午 4 點0 0,15,30,45 * 1-10 * ?每月前 10 天每隔 15 分鐘30 0 0 1 1 ? 2012從 2012 年 1 月 1 日午夜初 30 秒時

字段含義詳解:

字符適用字段描述示例
*所有匹配每個值分鐘字段 *:每分鐘
-所有指定一個范圍小時字段 10-12:10、11、12點
,所有指定多個離散值周幾字段 MON,WED,FRI:周一、周三、周五
/所有指定增量(步長值)秒字段 0/15:0、15、30、45秒
L日期字段、周幾字段在日期字段:當月的最后一天;在周幾字段:該月該周幾的最后一次出現日期字段 L:最后一天;周幾字段 5L:最后一個周五
W日期字段指定日期最近的工作日(周一到周五)15W:15號最近的工作日
#周幾字段指定該月該周幾的第幾次出現5#3:第三次周五
c日期字段、周幾字段基于日歷;指日歷中的第一天或指定值之后日期字段 5c:5號之后;周幾字段 1c:周日之后

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/78070.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/78070.shtml
英文地址,請注明出處:http://en.pswp.cn/web/78070.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數字智慧方案6172丨智慧醫院擴建信息化整體規劃方案(60頁PPT)(文末有下載方式)

資料解讀&#xff1a;智慧醫院擴建信息化整體規劃方案 詳細資料請看本解讀文章的最后內容。 在信息技術飛速發展的當下&#xff0c;醫療行業的信息化建設成為提升醫療服務水平、優化醫院管理的關鍵路徑。這份智慧醫院擴建信息化整體規劃方案&#xff0c;針對醫院擴建過程中的信…

ts全局導入接口

為了在項目中全局導入 ITableColumn 接口&#xff0c;避免每次使用時手動導入&#xff0c;可以通過以下步驟實現&#xff1a; 1. 全局導入的實現方式 在 Vue 項目中&#xff0c;可以通過在 src 目錄下創建一個 global.d.ts 文件&#xff0c;將 ITableColumn 接口聲明為全局類型…

汽車啟動原理是什么?

好的&#xff01;同學們&#xff0c;今天我們來討論汽車的啟動原理&#xff0c;重點分析其中的動力來源和摩擦力作用。我會結合物理概念&#xff0c;用盡量直觀的方式講解。 1. 汽車為什么會動&#xff1f;——動力的來源 汽車發動機&#xff08;內燃機或電動機&#xff09;工…

【音頻】Qt6實現MP3播放器

1、簡介 解碼MP3有很多種方法,比如:FFmpeg、GStreamer、Qt、libmpg123 庫等,下面介紹使用,只使用Qt的接口方法解碼、播放MP3。 開發配置: 1)操作系統:Windows11 2)Qt版本:Qt6.5.1 3)編譯器:MinGW_64 2、獲取音頻輸出設備 QMediaDevices 用于獲取媒體設備,包括音…

【Linux】VSCode用法

描述 部分圖片和經驗來源于網絡&#xff0c;若有侵權麻煩聯系我刪除&#xff0c;主要是做筆記的時候忘記寫來源了&#xff0c;做完筆記很久才寫博客。 專欄目錄&#xff1a;記錄自己的嵌入式學習之路-CSDN博客 目錄 1 安裝環境及運行C/C 1.1 安裝及配置步驟 1.2 運…

WPF之RadioButton控件詳解

文章目錄 一、RadioButton簡介二、RadioButton的基本用法1. 創建基本的RadioButton2. 分組管理3. 設置默認選中 三、RadioButton的重要屬性和事件1. 關鍵屬性2. 主要事件3. 事件處理流程4. 監聽選中狀態變化 四、數據綁定與RadioButton1. 基本數據綁定2. 數據綁定流程3. 使用枚…

筆試專題(十三)

文章目錄 kotori和氣球題解代碼 走迷宮題解代碼 主持人調度&#xff08;二&#xff09;&#xff08;難題&#xff09;題解代碼 kotori和氣球 題目鏈接 題解 1. 數學-排列組合 2. 每次乘完之后對109取模 代碼 #include<iostream>using namespace std;int main() {int…

圖形圖像基礎知識(1)---- RGB/YUV 顏色格式

目錄 常見RAW顏色格式RGB類型YUV類型YUV類型匯總YUV444類型YUV422類型YUV420類型 參考實例 常見RAW顏色格式 RGB 類型&#xff1a; ARGB1010102&#xff0c;ABGR1010102&#xff0c;BGRA1010102&#xff0c;RGBA1010102 ARGB8888&#xff0c;ABGR8888&#xff0c;BGRA8888&…

CentOS7.9安裝OpenSSL 1.1.1t和OpenSSH9.9p1

一、臨時開啟telnet登錄方式&#xff0c;避免升級失敗無法登錄系統 &#xff08;注意telnet登錄方式存在安全隱患&#xff0c;升級openssh相關服務后要記得關閉&#xff09; 1.安裝telnet服務 yum -y install xinetd telnet* 2.允許root用戶通過telnet登陸&#xff0c;編輯…

使用DCI和RTIT技術進行精準調優--看錄像

使用DCI和RTIT技術進行精準調優_嗶哩嗶哩_bilibili 每次看錄像都記錄一下。 PT/RTIT簡介 DCI技術即通過USB3.0接口去訪問調試目標機的JTAG組件&#xff0c;凡是運行在CPU上的代碼均可以進行調試&#xff0c;這就沒有了使用WinDBG調試時&#xff0c;會出現的不能調試敏感代碼…

從MCP基礎到FastMCP實戰應用

MCP(https://github.com/modelcontextprotocol) MCP&#xff08;模型上下文協議&#xff09; 是一種專為 基于LLM的工具調用外部工具而設計的協議 &#xff0c; 本質上是 LLM ? 工具之間的RPC&#xff08;遠程過程調用&#xff09; 的一種安全且一致的處理方式&#xff0c; 是…

深入理解C語言中的整形提升與算術轉換

深入理解C語言中的整形提升與算術轉換 一.整形提升&#xff1a;概念與原理 在C語言中&#xff0c;整形提升&#xff08;Integer Promotion&#xff09;是一個重要但容易被忽視的概念。它指的是在表達式中&#xff0c;任何小于int類型的整型&#xff08;如char、short&#xf…

編程題python常用技巧-持續

1.字典 1.1排序 在Python中&#xff0c;要按照字典的值進行排序&#xff0c;可以按照以下步驟操作&#xff1a; 方法說明 ?獲取鍵值對列表?&#xff1a;使用 dict.items() 獲取字典的鍵值對視圖。?排序鍵值對?&#xff1a;使用 sorted() 函數&#xff0c;并通過 key 參…

硬件工程師面試常見問題(11)

第五十一問&#xff1a;器件手冊的翻譯題目 要學英語啊&#xff0c;孩子。 第五十二問&#xff1a;二極管三極管常識題 1.二極管的導通電壓一般是 0.7V 2.MOS管根據摻雜類型可以分為 NMOS和PMOS 3.晶體三極管在工作時,發射結和集電結均處于正向偏置,該晶體管工作在一飽和態。…

mysql 配置文件中的[client]、[mysqld]、[mysqldump]和[mysql]區塊的作用區別

1. [client] 區塊 作用&#xff1a; 適用于 所有 MySQL 客戶端工具&#xff08;如 mysql 命令行客戶端、mysqldump、mysqladmin 等&#xff09;。 常見配置項&#xff1a; [client] host 127.0.0.1 # 默認連接的服務器地址 port 3306 # 默認端口 user root …

SARSA 算法詳解:python從零實現

喜歡可以訂閱專欄喲 第一章 強化學習基礎與核心概念 1.1 強化學習的定義與特點 強化學習(Reinforcement Learning, RL)是機器學習三大范式之一(監督學習、無監督學習、強化學習),其核心思想是通過智能體(Agent)與環境(Environment)的持續交互來學習最優策略。與監督…

(C題|社交媒體平臺用戶分析問題)2025年第二十二屆五一數學建模競賽(五一杯/五一賽)解題思路|完整代碼論文集合

我是Tina表姐&#xff0c;畢業于中國人民大學&#xff0c;對數學建模的熱愛讓我在這一領域深耕多年。我的建模思路已經幫助了百余位學習者和參賽者在數學建模的道路上取得了顯著的進步和成就。現在&#xff0c;我將這份寶貴的經驗和知識凝練成一份全面的解題思路與代碼論文集合…

AI重塑SEO關鍵詞策略

內容概要 傳統SEO策略主要依賴人工經驗與基礎工具進行關鍵詞布局&#xff0c;存在效率低、覆蓋維度單一等痛點。而AI技術的介入&#xff0c;使關鍵詞優化從靜態詞庫匹配轉向動態語義網絡構建。通過自然語言處理&#xff08;NLP&#xff09;與深度學習模型&#xff0c;AI不僅能…

【Unity】 組件庫分類詳解

1?? Audio&#xff08;音頻組件&#xff09; 用于處理游戲中的聲音。 Audio Source 讀音[???di?? ?s??s]&#xff0c;音頻源組件&#xff0c;用于播放音頻文件&#xff0c;可設置音量、Pitch、循環播放等屬性&#xff0c;是音頻播放的核心組件。 Audio Listener 讀音…

【區塊鏈】區塊鏈技術介紹

引言 區塊鏈技術自2008年中本聰提出比特幣概念以來&#xff0c;逐漸從加密貨幣的底層技術演變為一場顛覆傳統信任機制的全球性革命。它不僅重塑了金融體系&#xff0c;更在物流、醫療、政務等領域展現出巨大潛力。本文將用通俗易懂的語言&#xff0c;結合實例與原理&#xff0c…