目錄
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...