說起 cron 表達式大家一定不陌生,我們常用來作為定時任務執(zhí)行策略規(guī)則吗铐。在 Spring Boot 框架中 cron 表達式主要配合 @Scheduled 注解在應用程序中使用眼耀。在 Spring Boot 2.4 (既 Spring 5.3)以后,引入了 CronExpression 表達式處理器來替代原有的 CronSequenceGenerator澜掩。
為什么要替代原有的 CronSequenceGenerator ? 此處理器是基于 java.util.Calendar局限性比較大,無法完成last day of month
例如利用CronExpression 計算表達式下次執(zhí)行時間語義胞得。
執(zhí)行結(jié)果
新增常用表達式通用宏
對于非開發(fā)人員來說 cron 表達式并不容易理解涡扼,所以很難在出現(xiàn)錯誤的時候進行修復稼跳。比如筆者會把 cron 表達式 在在線網(wǎng)站[1] 模擬運行一下,確認執(zhí)行過程方便排查問題吃沪。
為了提高可讀性汤善,Spring Boot 現(xiàn)在支持以下代表常用表達式的宏。可以使用這些宏而不是六位的表達式红淡,因此:
@Scheduled(cron = "@hourly")卸伞。
相當于
@Scheduled(cron = "0 0 * * * *")
其他常用宏命令
增強原有表達式 最后幾天
如上其中的 每月的第幾天、每周的第幾天 支持 最后幾天 (L) 的語義 例如:
增強原有表達式 工作日
如上其中的 每月的第幾天 支持 工作日 (W)的語義 例如:
0 0 0 1W * * 每月的第一個工作日零時
0 0 0 LW * * 每月的最后一個工作日零時
增強原有表達式 幾周的星期幾
如上其中的 每周的第幾天 支持 每月第幾周的第幾天語義 例如
0 0 0 ? * 5#2 每月第二周的星期五零時
0 0 0 ? * MON#1 每月周一的星期一零時
參考資料
[1]
在線網(wǎng)站: https://cron.qqe2.com/
喜歡記得點贊加關(guān)注不迷路哦o鼻!?宥颈渊!