spring 自帶的定時器task
阿新 • • 發佈:2019-02-20
Cron表示式包括下面7個欄位並區別順序:秒0-59,分0-59,小時0-23,月內日期1-31,月1-12或者JAN-DEC,周內日期1-7或者SUN-SAT,年(可選欄位)留空或者1970-2099並且通過特殊字元表示特殊意義,具體為下:
斜線(/)字元表示增量值。例如,在秒欄位中"5/15"代表從第5秒開始,每15秒一次。問號(?)字元和字母L字元只有在月內日期和周內日期欄位中可用。問號表示這個欄位不包含具體值。所以,如果指定月內日期,可以在周內日期欄位中插入"?",表示周內日期值無關緊要。這裡有個很蛋疼的設定,無關Quartz,而是Spring整合Quartz後,它自己加的一個約束,那就是:日期(1-31) 和星期(SUN-SAT)兩者,必須有一個是問號(?),系統在啟動的時候,Spring會檢查表示式,如果不符合它的規則,就會拋異常。所以在使用的時候這個地方一定要注意,而這個在Linux上執行Cron是沒有這個限制的。
字母L字元是last的縮寫。放在月內日期欄位中,表示安排在當月最後一天執行。在周內日期欄位中,如果"L"單獨存在,就等於"7",否則代表當月內周內日期的最後一個例項。所以"0L"表示安排在當月的最後一個星期日執行。字母(W)字元把執行安排在最靠近指定值的工作日。把"1W"放在月內日期欄位中,表示把執行安排在當月的第一個工作日內。
井號(#)字元為給定月份指定具體的工作日例項。把"MON#2" 放在周內日期欄位中,表示把任務安排在當月的第二個星期一。
星號(*)字元是通配字元,表示該欄位可以接受任何可能的值、表示式例子。
例子:
"0 0 08 * * ?" 每天上午8點觸發
"0 15 10 ? * *" 每天上午10:15觸發
"0 15 10 * * ?" 每天上午10:15觸發
"0 15 10 * * ? *" 每天上午10:15觸發
"0 15 10 * * ? 2005" 2005年的每天上午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 2009-2019" 2009年至2019年的每月的最後一個星期五上午10:15觸發
"0 15 10 ? * 6#3" 每月的第三個星期五上午10:15觸發
斜線(/)字元表示增量值。例如,在秒欄位中"5/15"代表從第5秒開始,每15秒一次。問號(?)字元和字母L字元只有在月內日期和周內日期欄位中可用。問號表示這個欄位不包含具體值。所以,如果指定月內日期,可以在周內日期欄位中插入"?",表示周內日期值無關緊要。這裡有個很蛋疼的設定,無關Quartz,而是Spring整合Quartz後,它自己加的一個約束,那就是:日期(1-31)
字母L字元是last的縮寫。放在月內日期欄位中,表示安排在當月最後一天執行。在周內日期欄位中,如果"L"單獨存在,就等於"7",否則代表當月內周內日期的最後一個例項。所以"0L"表示安排在當月的最後一個星期日執行。字母(W)字元把執行安排在最靠近指定值的工作日。把"1W"放在月內日期欄位中,表示把執行安排在當月的第一個工作日內。
井號(#)字元為給定月份指定具體的工作日例項。把"MON#2"
星號(*)字元是通配字元,表示該欄位可以接受任何可能的值、表示式例子。
例子:
"0 0 08 * * ?" 每天上午8點觸發
"0 15 10 ? * *" 每天上午10:15觸發
"0 15 10 * * ?" 每天上午10:15觸發
"0 15 10 * * ? *" 每天上午10:15觸發
"0 15 10 * * ? 2005" 2005年的每天上午10:15觸發
"0 * 14 * * ?" 在每天下午2點到下午2:59期間的每1分鐘觸發
"0 0/5 14 * * ?" 在每天下午2點到下午2:55期間的每5分鐘觸發
"0 0/5 14,18 * * ?" 在每天下午2點到2:55
"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 2009-2019" 2009年至2019年的每月的最後一個星期五上午10:15觸發
"0 15 10 ? * 6#3" 每月的第三個星期五上午10:15觸發