1. 程式人生 > >SpringBoot基於資料庫的定時任務實現

SpringBoot基於資料庫的定時任務實現

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

基於註解來建立定時任務非常簡單,只需幾行程式碼便可完成。實現如下:

@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優化技巧,效率提升不止十倍!

掃碼關注公眾號,傳送關鍵詞獲取相關資料:
  1. 發“Springboot”領取電商專案實戰原始碼;

  2. 發“SpringCloud”領取學習實戰資料;