配置檔案
>
<
task:annotation‐driven
>
task:annotation‐driven
>
xmlns:task=""
/spring‐task.xsd
示例
@component
public
class
timetask
}
cron表示式解析
cron表示式是乙個字串,字串以5或6個空格隔開,分開工6或7個域,每乙個域代表乙個含義,cron有如下兩種語法
格式:seconds minutes hours dayofmonth month dayofweek year
或seconds minutes hours dayofmonth month dayofweek
注意:springtask不支援第一種格式,也就是說只能寫6個域!
每乙個域可出現的字元如下:**
seconds:可出現,- * / 四個字元,有效範圍為0-59的整數
minutes:可出現,- * / 四個字元,有效範圍為0-59的整數
hours:可出現,- * / 四個字元,有效範圍為0-23的整數
dayofmonth:可出現,- * / ? l w c八個字元,有效範圍為1-31的整數
month:可出現,- * / 四個字元,有效範圍為1-12的整數或jan-dec
dayofweek:可出現,- * / ? l c #四個字元,有效範圍為1-7的整數或sun-sat兩個範圍。
1表示星期天,2表示星期一, 依次類推
year:可出現,- * / 四個字元,有效範圍為1970-2023年
每乙個域都使用數字,但還可以出現如下特殊字元,它們的含義是:
(1) *:表示匹配該域的任意值,假如在minutes域使用*,即表示每分鐘都會觸發事件。
(2) ?: 只能用在dayofmonth和dayofweek兩個域。它也匹配域的任意值,但實際不會。因為dayofmonth和dayofweek會相互影響。
例如想在每月的20日觸發排程,不管20日到底是星期幾,則只能使用如下寫法: 13 13 15 20 * ?,其中最後一位只能用?,而不能使用*,如果使用*表示不管星期幾都會觸發,實際上並不是這樣。
(3)-:表示範圍,例如在minutes域使用5-20,表示從5分到20分鐘每分鐘觸發一次
(4)/:表示起始時間開始觸發,然後每隔固定時間觸發一次,例如在minutes域使用5/20,則意味著5分鐘觸發一次,而25,45等分別觸發一次.
(5),:表示列出列舉值值。例如:在minutes域使用5,20,則意味著在5和20分每分鐘觸發一次。
(6)l:表示最後,只能出現在dayofweek和dayofmonth域,如果在dayofweek域使用5l,
意味著在最後的乙個星期四觸發。
(7)w:表示有效工作日(周一到周五),只能出現在dayofmonth域,系統將在離指定日期的最近的有效工作日觸發事件。例如:在dayofmonth使用5w,如果5日是星期六,則將在最近的工作日:星期五,即4日觸發。如果5日是星期天,則在6日觸發;如果5日在星期一到星期五中的一天,則就在5日觸發。另外一點,w的最近尋找不會跨過月份
(8)lw:這兩個字元可以連用,表示在某個月最後乙個工作日,即最後乙個星期五。
(9)#:用於確定每個月第幾個星期幾,只能出現在dayofmonth域。例如在4#2,表示某月的第二個星期三。
Spring Task 定時任務
所謂定時任務,就是根據我們設定的時間定時執行任務,就像定時發郵件一樣,設定時間到了,郵件就會自動傳送。在 spring 大行其道的今天,spring 也提供了其定時任務功能,spring task。同 spring 的其他功能一樣,我們既可以通過配置檔案也可以通過註解形式來實現。一 通過配置檔案 1...
Spring Task定時任務
spring task是spring3.0以後提供的定時任務工具。使用spring定時任務,除spring相關的包外不需要新增額外的jar包,支援註解和xml配置兩種形式。準備工作 在spring配置檔案頭中新增命名空間xmlns task及描述。1.1編寫註解的定時任務類 import org.s...
Spring task定時任務
第一次寫定時任務,簡訊通知定時,雖然寫完了,但是感覺 不夠簡潔,效能不行害怕跑蹦了,放到這裡一是為了記錄,更多的是希望大家提出寶貴的意見。1.將使用者id拼接成字串,用來批量查詢使用者資訊。string memberid membertransactions.stream map membertra...