任務排程框架Quartz

2021-07-26 18:42:27 字數 4146 閱讀 9878

在spring中整合

quartz 進行任

務排程;需要用到的jar包: 

「org.springframework.context.support-3.0.2.release.jar」 

「quartz-1.8.6.jar」

quartz的核心包

要在spring 中利用quartz排程任務;需要配置三個bean:

1、制定任務資訊 methodinvokingjobdetailfactorybean

① 設定執行物件 targetobject

② 設定執行物件中對應的執行方法 targetmethod

③ 是否可以同步執行 concurrent

2、制定任務執行時機(執行觸發器)******triggerbean crontriggerbean

2.1、簡單觸發器(******triggerbean)

① 設定任務詳細 jobdetail

② 設定任務延遲執行時間 startdelay

③ 設定任務執行頻率 repeatinterval

2.2、任務觸發器(crontriggerbean)

① 設定任務詳細 jobdetail

② 設定執行時機(cronexpression)

cronexpression:秒 分 時 日 月 周 年(可選)

注意:日和周不可同時出現, 其中乙個需要是 ?

3、設定任務排程工廠 schedule***ctorybean

設定觸發器們 triggers

'*' 字元可以用於所有字段,在「分」欄位中設為

"*"表示

"每一分鐘

"的含義。

'?' 字元可以用在「日」和「週幾」字段

. 它用來指定

'不明確的值

'. 這在你需要指定這兩個欄位中的某乙個值而不是另外乙個的時候會被用到。在後面的例子中可以看到其含義。

'-' 字元被用來指定乙個值的範圍,比如在「小時」欄位中設為

"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"的值。 因此對於「月」字段來說

"7/6"

只是表示

7月被開啟而不是「每六個月」

, 請注意其中微妙的差別。

'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"

則表示"

日曆中的第一天或者週日及其以後"。

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

在spring中整合quartz 進行任務排程;需要用到的jar包:

「org.springframework.context.support-3.0.2.release.jar」

「quartz-1.8.6.jar」 quartz的核心包

要在spring 中利用quartz排程任務;需要配置三個bean:

1、制定任務資訊 methodinvokingjobdetailfactorybean

① 設定執行物件 targetobject

② 設定執行物件中對應的執行方法 targetmethod

③ 是否可以同步執行 concurrent

2、制定任務執行時機(執行觸發器)******triggerbean crontriggerbean

2.1、簡單觸發器(******triggerbean)

① 設定任務詳細 jobdetail

② 設定任務延遲執行時間 startdelay

③ 設定任務執行頻率 repeatinterval

2.2、任務觸發器(crontriggerbean)

① 設定任務詳細 jobdetail

② 設定執行時機(cronexpression)

cronexpression:秒 分 時 日 月 周 年(可選)

3、設定任務排程工廠 schedule***ctorybean

設定觸發器們 triggers

任務排程 Quartz框架

乙個簡單的例子 與spring的整合 實現job介面定義任務 在spring配置檔案中進行配置 在多數情況下應該使用crontrigger觸發器,結合cron表示式與calendar,calendar有一些實現類,如annualcalendar,monthlycalendar,weeklycalen...

Quartz定時任務排程框架

簡單使用步驟 1.首先匯入quartz相關依賴 dependency 2.第二步 定義乙個類實現job介面,重寫execute方法 author administrator public class testjob implements job 第三步定義乙個主方法類 這裡使用的觸發器是crontr...

任務排程 Quartz

首先,quartz是什麼 先看看我們生活中的例子 每月的2月21號提醒我今天是男朋友的生日 每月的17號提醒我大姨媽快要來了 每隔一小時提醒我起來走走運動運動 就是在某乙個有規律的時間點乾某件事。並且時間的觸發的條件可以非常複雜 比如每月最後乙個工作日的17 50 複雜到需要乙個專門的框架來幹這個事...