SpringBoot基於資料庫的定時任務實現
阿新 • • 發佈:2019-12-27
在我們平時開發的專案中,定時任務基本屬於必不可少的功能,那大家都是怎麼做的呢?但我知道的大多都是靜態定時任務實現。
基於註解來建立定時任務非常簡單,只需幾行程式碼便可完成。實現如下:
@Configuration @EnableScheduling public class SimpleScheduleTask { //10秒鐘執行一次 @Scheduled(cron = "0/10 * * * * ?") private void tasks() { System.out.println("【定時任務】 每10秒執行一次!"); } }
Cron表示式引數分別表示(從左到右):
秒(0~59) 如0/5表示每5秒
分(0~59)
時(0~23)
日(0~31) 月的某一天
月(0~11)
周幾( 可填1-7 或 SUN/MON/TUE/WED/THU/FRI/SAT)
就上面幾行程式碼,就能搞定一個定時任務。顯然,使用Scheduled 確實特別的方便,但有很大的缺點和侷限,就是當我們調整了執行計劃的時間時,需要重啟服務才能生效,這就有些不方便。為了達到實時生效的效果,可以通過資料庫來動態實現定時任務。
基於資料庫的動態定時任務實現
將定時任務配置在資料庫,啟動專案的時候,用mybatis讀取資料庫,例項化物件,並設定定時任務。如果需要新增,減少,修改定時任務,僅需要修改資料庫資料,並重啟專案即可,無需改程式碼。
資料庫配置
執行的結果
這樣我們可以通過直接修改資料庫,執行週期就會改變,並且不需要我們重啟應用,十分方便。
推薦閱讀:
Java中大量if...else語句的消除替代方案
Java8中遍歷Map的常用四種方式
推薦一些MySQL優化技巧,效率提升不止十倍!
掃碼關注公眾號,傳送關鍵詞獲取相關資料:
-
發“Springboot”領取電商專案實戰原始碼;
-
發“SpringCloud”領取學習實戰資料;