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”領取學習實戰資料;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM