Springboot整合定時任務

2021-10-01 23:08:40 字數 3875 閱讀 8540

目錄

1、建立專案

2、相關引數說明

2.1 @scheduled註解的屬性如下

2.2 cron表示式書寫規範

2.3fixedrate 說明

建立boot專案,pom 包裡面只需要引入 spring boot starter 包即可

org.mybatis.spring.boot

mybatis-spring-boot-starter

2.0.0

在啟動類上面加上 @enablescheduling即可開啟任務排程

@enablescheduling

public static void main(string args) }

模擬乙個定時任務類

@component

public class testschedule

}

@scheduled 引數可以接受兩種定時的設定,一種是我們常用的 cron="*/6 * * * * ?",一種是 fixedrate=6000,兩種都表示每隔六秒列印一下內容。

cron表示式是乙個由 7個子表示式組成的字串。每個子表示式都描述了乙個單獨的日程細節。這些子表示式用空格分隔。

cron表示式說明:秒分

時日月周

年seconds

minutes

hours

day-of-month

month

day-of-week

year秒分鐘

小時月中的天

月週中的天

年子表示式說明:

是否必須

取值範圍

特殊字元秒是

0-59分是

0-59時是

0-23日是

1-31(需要考慮實際月份)

, - * / ? l w c月是

1-12 或 jan-dec週是

1-7 或 sun-sat

, - * / ? l c #年否

空或 1970-2099

彙總:字 段秒分

時日月周

年seconds

minutes

hours

day-of-month

month

day-of-week

year秒分鐘

小時月中的天

月週中的天

年是否必 須是是

是是是是

否取值範 圍

0-59

0-59

0-23

1-31

1-12 或 jan-dec

1-7 或 sun-sat

空或 1970-2099

特殊字 符

, - * / ? l w c

, - * / ? l c #

注意:cron

表示式對特殊字元的大小寫不敏感,對代表星期的縮寫英文大小寫也不敏感。

特殊字元

星號代表所有可能的值,匹配該域合法的任意值。因此,「 * 」在子表示式【月】裡表示每個月的含義,「 * 」在子表示式【周】表示星期的每一天。

問號只能用在日和周域上,但是不能在這兩個域上同時使用。表示不指定值。你可以認為 ? 字元是 "我並不關心在該域上是什麼值。" 這不同於星號,星號是指示著該域上的每乙個值。? 是說不為該域指定值。

例如想在每月的20日觸發排程,不管20日到底是星期幾,則只能使用如下寫法: 13 13 15 20 * ?, 其中最後一位只能用?,而不能使用*,如果使用*表示不管星期幾都會觸發,實際上並不是這樣。

井號該字元只能在星期欄位中使用,表示當月某個工作日。如6#3表示當月的第三個星期五(6表示星期五,#3表示當前的第三個),而4#5表示當月的第五個星期三,假設當月沒有第五個星期三,忽略不觸發;

斜槓x/y表達乙個等步長序列,x為起始值,y為增量步長值。如在分鐘欄位中使用0/15,則表示為0,15,30和45秒,而5/15在分鐘欄位中表示5,20,35,50,你也可以使用*/y,它等同於0/y;

中劃線表達乙個範圍,如在小時欄位中使用「10-12」,則表示從10到12點,即10,11,12;

逗號表達乙個指定的列表值,如在星期欄位中使用「mon,wed,fri」,則表示星期一,星期三和星期五;l字母

該字元只在日期和星期欄位中使用,代表「last」的意思,但它在兩個欄位中意思不同。l在日期欄位中,表示這個月份的最後一天,如一月的31號,非閏年二月的28號;如果l用在星期中,則表示星期六,等同於7。但是,如果l出現在星期欄位裡,而且在前面有乙個數值x,則表示「這個月的最後x天」,例如,6l表示該月的最後星期五;w字母

該字元只能出現在日期欄位裡,是對前導日期的修飾,表示離該日期最近的工作日。例如15w表示離該月15號最近的工作日,如果該月15號是星期六,則匹配14號星期五;如果15日是星期日,則匹配16號星期一;如果15號是星期二,那結果就是15號星期二。但必須注意關聯的匹配日期不能夠跨月,如你指定1w,如果1號是星期六,結果匹配的是3號星期一,而非上個月最後的那天。w字串只能指定單一日期,而不能指定日期範圍。

lw組合:在日期字段可以組合使用lw,它的意思是當月的最後乙個工作日;c字母

該字元只在日期和星期欄位中使用,代表「calendar」的意思。它的意思是計畫所關聯的日期,如果日期沒有被關聯,則相當於日曆中所有日期。例如5c在日期欄位中就相當於日曆5日以後的第一天。1c在星期欄位中相當於星期日後的第一天。

示例30 * * * * ?

每半分鐘觸發任務

30 10 * * * ?

每小時的10分30秒觸發任務

30 10 1 * * ?

每天1點10分30秒觸發任務

30 10 1 20 * ?

每月20號1點10分30秒觸發任務

30 10 1 20 10 ? *

每年10月20號1點10分30秒觸發任務

30 10 1 20 10 ? 2011

2023年10月20號1點10分30秒觸發任務

30 10 1 ? 10 * 2011

2023年10月每天1點10分30秒觸發任務

30 10 1 ? 10 sun 2011

2023年10月每週日1點10分30秒觸發任務

15,30,45 * * * * ?

每15秒,30秒,45秒時觸發任務

15-45 * * * * ?

15到45秒內,每秒都觸發任務

15/5 * * * * ?

每分鐘的每15秒開始觸發,每隔5秒觸發一次

15-30/5 * * * * ?

每分鐘的15秒到30秒之間開始觸發,每隔5秒觸發一次

0 0/3 * * * ?

每小時的第0分0秒開始,每三分鐘觸發一次

0 15 10 ? * mon-fri

星期一到星期五的10點15分0秒觸發任務

0 15 10 l * ?

每個月最後一天的10點15分0秒觸發任務

0 15 10 lw * ?

每個月最後乙個工作日的10點15分0秒觸發任務

0 15 10 ? * 5l

每個月最後乙個星期四的10點15分0秒觸發任務

0 15 10 ? * 5#3

每個月第三週的星期四的10點15分0秒觸發任務

測試位址

@scheduled(fixedrate=6000) :上一次開始執行時間點之後6秒再執行

@scheduled(fixeddelay=6000) :上一次執行完畢時間點之後6秒再執行

@scheduled(initialdelay=1000,fixedrate=6000) :第一次延遲1秒後執行,之後按 fixedrate 的規則每6秒執行一次

springboot整合定時任務

1 引入依賴 org.springframework.boot spring boot starter quartz org quartz trigger key name job trigger job group job group cron time 0 5 3 新建配置類 configura...

springboot整合定時任務

參考 org.springframework.bootgroupid spring boot starterartifactid dependency org.springframework.bootgroupid spring boot starter testartifactid testsco...

Spring boot定時任務及整合Quartz

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