好多網友對@Scheduled cron表達式含義做了闡述,個人認為很多對於 * ?的說明不夠具體也不算准確,借此本文特別對 * ?做一下說明。
cron
格式:【秒數】【分鍾】【小時】【日期】【月份】【星期幾】【年份(可省略)】
關於【日期】與【星期幾】的說明:
1、【日期】與【星期幾】兩者為互斥的,不能同時設置。這個比較容易理解,假設日期設置為1,星期幾也設置為1,那含義是什么:每月1日且為周一時觸發,可能一年之中沒用任何天能滿足上述條件,更重要的是什么人能有這種xx的需求呢?
2、【日期】與【星期幾】中任何一個設置值(包含 *),另一個必需使用 ?來進行屏蔽,此時 ?起到屏蔽的作用。
3、?只能出現在【日期】與【星期幾】中,且不能同時出現
常用表達式符號說明:
* 表示任意值都滿足觸發條件
,表示列表項目的分割,如 秒數中設置 1,3,17,則表示秒數為1,3,17時滿足觸發條件
-表示連續的列表范圍,如 秒數中設置 1-5,則表示秒數為1到5時,均滿足觸發條件
/正常的用法為 x/y,x表示觸發的起始數值,y表示后續間隔,如 秒數中設置 5/20,則表示從第5秒開始觸發,然后每隔20秒再循環觸發(25、45,下次循環5、25、45.........)
表達式分析:
10 * * * * ? 每10秒觸發任務
10 10 * * * ? 每小時的10分10秒觸發任務
10 10 1 * * ? 每天1點10分10秒觸發任務
0 0 10,14,18 * * ? 每天10、14、18點觸發任務
0 0/20 9-17 * * ? 每天9-17點,20分鍾觸發任務
0 * 12 * * ? 每天12:00-12:59期間的每1分鍾觸發
0 0/3 12 * * ? 在每天12:00-12:59期間的每3分鍾觸發
0 0-5 12 * * ? 在每天12:00-12:05期間的每1分鍾觸發
10 10 1 12 * ? 每月12號1點10分10秒觸發任務
10 10 1 ? * 2 每周1的1點10分10秒觸發任務
10 10 1 20 10 ? 2021 2021年10月20號1點10分10秒觸發任務
10 10 1 * 10 ? 2021 2021年10月每天1點10分10秒觸發任務
10 10 1 ? 10 * 2021 2021年10月每天1點10分10秒觸發任務
10 10 1 ? 10 7 2021 2021年10月每周6 1點10分10秒觸發任務