spring學習系列 定時器二 Quartz

2021-09-01 14:40:26 字數 2867 閱讀 2472

重點包: 

quartz-1.8.6.jar

org.springframework.context.support-3.1.1.release.jar

包說明

quartz包請使用1.8.6或以下的版本,因為quartz2.0版本和spring3.1.1存在衝突,會丟擲

目的

通過quartz定時迴圈執行乙個任務

任務類

該類還包含乙個屬性stest及其set/get方法

public class myjob extends quartzjobbean 

public string getstest()

public void setstest(string stest)

}

spring的配置檔案jobdetailbean:設定要執行任務的類,在這裡通過jobdataasmap屬性還可以設定任務類的屬性。

trigger用於設定人物類啟動的時間,迴圈的間隔等工作資訊。spring包含2種trigger :

cronreporttrigger可以設定任務精確工作的時間

schedule***ctorybean:僅僅有以上2個類設定是不夠的,如果要啟動定時器,還需要通過此類設定要啟動的trigger。

com.hry.spring.timertask.myjob

10

通過上篇文章的測試**執行以上程式,則有如下輸入,說明我們程式成功了。

stest = 10

myjob run...

stest = 10

myjob run...

stest = 10

myjob run...

stest = 10

myjob run...

stest = 10

myjob run...

crontriggerbean的精華是cron表示式,以下是關於cron表示式(來自網路)

cron 表示式依照順序有7 個字段:秒分

小時月內日期

月週內日期

年(可選字段)

特殊字元

cron 觸發器利用一系列特殊字元,如下所示:

反斜線(/)字元表示增量值。例如,在秒字段中「5/15」代表從第 5 秒開始,每 15 秒一次。

問號(?)字元和字母 l 字元只有在月內日期和週內日期欄位中可用。問號表示這個欄位不包含具體值。所以,如果指定月內日期,可以在週內日期欄位中插入「?」,表示週內日期值無關緊要。字母 l 字元是 last 的縮寫。放在月內日期欄位中,表示安排在當月最後一天執行。在週內日期欄位中,如果「l」單獨存在,就等於「7」,否則代表當月內週內日期的最後乙個例項。所以「0l」表示安排在當月的最後乙個星期日執行。

在月內日期欄位中的字母(w)字元把執行安排在最靠近指定值的工作日。把「1w」放在月內日期欄位中,表示把執行安排在當月的第乙個工作日內。

井號(#)字元為給定月份指定具體的工作日例項。把「mon#2」放在週內日期欄位中,表示把任務安排在當月的第二個星期一。

星號(*)字元是通配字元,表示該欄位可以接受任何可能的值。

字段 允許值 允許的特殊字元 

秒 0-59 , - * / 

分 0-59 , - * / 

小時 0-23 , - * / 

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

月份 1-12 或者 jan-dec , - * / 

星期 1-7 或者 sun-sat , - * ? / l c # 

年(可選) 留空, 1970-2099 , - * /

表示式意義 

"0 0 12 * * ?" 每天中午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期間的每1分鐘觸發 

"0 0/5 14 * * ?" 在每天下午2點到下午2:55期間的每5分鐘觸發 

"0 0/5 14,18 * * ?" 在每天下午2點到2:55期間和下午6點到6:55期間的每5分鐘觸發 

"0 0-5 14 * * ?" 在每天下午2點到下午2:05期間的每1分鐘觸發 

"0 10,44 14 ? 3 wed" 每年三月的星期三的下午2:10和2: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觸發 

"0 15 10 ? * 6l 2002-2005" 2023年至2023年的每月的最後乙個星期五上午10:15觸發 

"0 15 10 ? * 6#3" 每月的第三個星期五上午10:15觸發 

每天早上6點

0 6 * * *

每兩個小時

0 */2 * * * 

晚上11點到早上8點之間每兩個小時,早上八點

0 23-7/2,8 * * *

每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點

0 11 4 * 1-3 

1月1日早上4點

0 4 1 1 *

Spring學習 Spring中定時器實現

在一些工作需要使用到定時器,spring很好的整合了定時器的功能!在spring 中使用quartz,本文介紹spring3.0以後自主開發的定時任務工具,spring task,可以將它比作乙個輕量級的quartz,而且使用起來很簡單,除spring相關的包外不需要額外的包,下面介紹兩種方式實現s...

spring定時器分析

spring定時器如何使用?步驟1.定義job bean 1.taskscheduler構造 2.初始化相關服務 步驟2.定義乙個joblist bean來統一管理job 步驟3.定義job factorybean和crontriggerbean 定時任務列表 啟動方法 指定最終封裝出的任務是否有狀...

spring 定時器配置

spring 中配置定時器 如果是乙個普通的類,不需要注入dao層 上面的兩個bean節點根據自己的情況任選乙個,下面的bean節點都是需要的。0 0 0,12 時間的配置如下 0 26 16 value 時間大小由小到大排列,從秒開始,順序為 秒,分,時,天,月,年 為任意 為無限制。由此上面所配...