SpringBoot基於數據庫的定時任務實現

在咱們平時開發的項目中,定時任務基本屬於必不可少的功能,那你們都是怎麼作的呢?但我知道的大多都是靜態定時任務實現。java

基於註解來建立定時任務很是簡單,只需幾行代碼即可完成。實現以下:數據庫

@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)mybatis

就上面幾行代碼,就能搞定一個定時任務。顯然,使用Scheduled 確實特別的方便,但有很大的缺點和侷限,就是當咱們調整了執行計劃的時間時,須要重啓服務才能生效,這就有些不方便。爲了達到實時生效的效果,能夠經過數據庫來動態實現定時任務。app

 

基於數據庫的動態定時任務實現ide

將定時任務配置在數據庫,啓動項目的時候,用mybatis讀取數據庫,實例化對象,並設定定時任務。若是須要新增,減小,修改定時任務,僅須要修改數據庫資料,並重啓項目便可,無需改代碼。學習

 

數據庫配置優化

 

運行的結果3d

 

這樣咱們能夠經過直接修改數據庫,執行週期就會改變,而且不須要咱們重啓應用,十分方便。code

 

推薦閱讀:orm

Java中大量if...else語句的消除替代方案

Java8中遍歷Map的經常使用四種方式

推薦一些MySQL優化技巧,效率提高不止十倍!

掃碼關注公衆號,發送關鍵詞獲取相關資料:
  1. 發「Springboot」領取電商項目實戰源碼;

  2. 發「SpringCloud」領取學習實戰資料;

 
相關文章
相關標籤/搜索