spring多個定時任務quartz配置

2021-08-26 19:42:29 字數 4492 閱讀 8509

<?xml version="1.0" encoding="utf-8"?>

//任務1

//任務2

jobmethod1//執行的方法

jobmethod2

0 0 0 * * ?//每天凌晨12點執行一次

0 0 */1 * * ?//每小時執行一次

乙個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

在2023年1月1日午夜過30秒時

0 0 8-5 ? * mon-fri

每個工作日的工作時間

各個時間可用值如下:

秒 0-59 , - * /

分 0-59 , - * /

小時 0-23 , - * /

日 1-31 , - * ? / l w c

月 1-12 or jan-dec , - * /

週幾 1-7 or sun-sat , - * ? / l c #

年 (可選字段) empty, 1970-2099 , - * /

可用值詳細分析如下:

「*」——字元可以用於所有字段,在「分」欄位中設為"*"表示"每一分鐘"的含義。

「?」——字元可以用在「日」和「週幾」欄位. 它用來指定 '不明確的值'. 這在你需要指定這兩個欄位中的某乙個值而不是另外乙個的時候會被用到。在後面的例子中可以看到其含義。

「-」——字元被用來指定乙個值的範圍,比如在「小時」欄位中設為"10-12"表示"10點到12點"。

「,」——字元指定數個值。比如在「週幾」欄位中設為"mon,wed,fri"表示"the days monday, wednesday, and friday"。

「/」——字元用來指定乙個值的的增加幅度. 比如在「秒」欄位中設定為"0/15"表示"第0, 15, 30, 和 45秒"。而 "5/15"則表示"第5, 20, 35, 和 50". 在'/'前加"*"字元相當於指定從0秒開始. 每個欄位都有一系列可以開始或結束的數值。對於「秒」和「分」字段來說,其數值範圍為0到59,對於「小時」字段來說其為0到23, 對於「日」字段來說為0到31, 而對於「月」字段來說為1到12。"/"字段僅僅只是幫助你在允許的數值範圍內從開始"第n"的值。

「l」——字元可用在「日」和「週幾」這兩個字段。它是"last"的縮寫, 但是在這兩個欄位中有不同的含義。例如,「日」欄位中的"l"表示"乙個月中的最後一天" —— 對於一月就是31號對於二月來說就是28號(非閏年)。而在「週幾」欄位中, 它簡單的表示"7" or "sat",但是如果在「週幾」欄位中使用時跟在某個數字之後, 它表示"該月最後乙個星期×" —— 比如"6l"表示"該月最後乙個周五"。當使用'l'選項時,指定確定的列表或者範圍非常重要,否則你會被結果搞糊塗的。

「w」——可用於「日」字段。用來指定歷給定日期最近的工作日(周一到周五) 。比如你將「日」欄位設為"15w",意為: "離該月15號最近的工作日"。因此如果15號為週六,觸發器會在14號即周五呼叫。如果15號為週日, 觸發器會在16號也就是周一觸發。如果15號為周二,那麼當天就會觸發。然而如果你將「日」欄位設為"1w", 而一號又是週六, 觸發器會於下周一也就是當月的3號觸發,因為它不會越過當月的值的範圍邊界。'w'字元只能用於「日」欄位的值為單獨的一天而不是一系列值的時候。

「l」和「w」可以組合用於「日」字段表示為'lw',意為"該月最後乙個工作日"。

「#」—— 字元可用於「週幾」字段。該字元表示「該月第幾個周×」,比如"6#3"表示該月第三個周五( 6表示周五而"#3"該月第三個)。再比如: "2#1" = 表示該月第乙個周一而 "4#5" = 該月第五個週三。注意如果你指定"#5"該月沒有第五個「周×」,該月是不會觸發的。

「c」—— 字元可用於「日」和「週幾」字段,它是"calendar"的縮寫。 它表示為基於相關的日曆所計算出的值(如果有的話)。如果沒有關聯的日曆, 那它等同於包含全部日曆。「日」字段值為"5c"表示"日曆中的第一天或者5號以後",「週幾」字段值為"1c"則表示"日曆中的第一天或者週日以後"。

對於「月份」欄位和「週幾」字段來說合法的字元都不是大小寫敏感的。

一些例子:

"0 0 12 * * ?" 每天中午十二點觸發

"0 15 10 ? * *" 每天早上10:15觸發

"0 15 10 * * ?" 每天早上10:15觸發

"0 15 10 * * ? *" 每天早上10:15觸發

"0 15 10 * * ? 2005" 2023年的每天早上10:15觸發

"0 * 14 * * ?" 每天從下午2點開始到2點59分每分鐘一次觸發

"0 0/5 14 * * ?" 每天從下午2點開始到2:55分結束每5分鐘一次觸發

"0 0/5 14,18 * * ?" 每天的下午2點至2:55和6點至6點55分兩個時間段內每5分鐘一次觸發

"0 0-5 14 * * ?" 每天14:00至14:05每分鐘一次觸發

"0 10,44 14 ? 3 wed" 三月的每週三的14:10和14:44觸發

"0 15 10 ? * mon-fri" 每個周

一、周二、周

三、周四、周五的10:15觸發

"0 15 10 15 * ?" 每月15號的10:15觸發

"0 15 10 l * ?" 每月的最後一天的10:15觸發

"0 15 10 ? * 6l" 每月最後乙個周五的10:15

Spring boot定時任務及整合Quartz

各種企業應用幾乎都會用到任務排程的需求,比如論壇每天凌晨統計使用者的 積分,每隔半個小時生成精華文章 spring boot中使用定時任務 spring boot中使用定時任務只要使用兩個註解 enablescheduling scheduled 在spring boot的啟動類上新增 enable...

spring多個定時任務quartz配置

spring多個定時任務quartz配置 xmlns xsi xsi schemalocation spring beans 2.5.xsd default lazy init false 任務1 任務2 jobmethod1 執行的方法 jobmethod2 0 0 0 每天凌晨12點執行一次 0...

Spring定時任務

sayhello 0 08 21 下面的表示式 0 15 10 6l 2002 2005 將在2002年到2005年的每個月的最後乙個星期五上午10點15分執行作業。你不可能用 trigger來做這些事情。你可以用兩者之中的任何乙個,但哪個跟合適則取決於你的排程需要。更多詳細介紹參考此處 關於cro...