SPRING 定時任務設定詳解

2021-08-30 09:47:52 字數 3937 閱讀 6175

org.springframework.scheduling.quartz.crontriggerbean

允許你更精確地控制任務的執行時間,只需要設定其

cronexpression

屬性。

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

年的每天早上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怎麼設定定時任務

每天凌晨2點 0 0 2 和每天隔一小時 0 1 例1 每隔5秒執行一次 5 例2 每隔5分執行一次 0 5 在26分 29分 33分執行一次 0 26,29,33 例3 每天半夜12點30分執行一次 0 30 0 注意日期域為0不是24 每天凌晨1點執行一次 0 0 1 每天上午10 15執行一次...

cron設定定時任務詳解

定時任務cron job被用於安排那些需要被週期性執行的命令。利用它,你可以配置某些命令或者指令碼,讓它們在某個設定的時間內周期性地執行。cron 是 linux 或者類 unix 系統中最為實用的工具之一。cron 服務 守護程序 在系統後台執行,並且會持續地檢查 etc crontab檔案和 e...

Spring定時任務

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