1. 程式人生 > >SpringBoot整合定時任務和非同步任務處理 3節課

SpringBoot整合定時任務和非同步任務處理 3節課

1、SpringBoot定時任務schedule講解
     簡介:講解什麼是定時任務和常見定時任務區別

        1、常見定時任務 Java自帶的java.util.Timer類
             timer:配置比較麻煩,時間延後問題
             timertask:不推薦

        2、Quartz框架
             配置更簡單
             xml或者註解

        3、SpringBoot使用註解方式開啟定時任務
             1)啟動類裡面 @EnableScheduling開啟定時任務,自動掃描
             2)定時任務業務類 加註解 @Component被容器掃描
             3)定時執行的方法加上註解 @Scheduled(fixedRate=2000) 定期執行一次


2、SpringBoot常用定時任務配置實戰
     簡介:SpringBoot常用定時任務表示式配置和線上生成器

        1、cron 定時任務表示式 @Scheduled(cron="*/1 * * * * *") 表示每秒
             1)crontab 工具  https://tool.lu/crontab/
         2、fixedRate: 定時多久執行一次(上一次開始執行時間點後xx秒再次執行;)
         3、fixedDelay: 上一次執行結束時間點後xx秒再次執行
         4、fixedDelayString:  字串形式,可以通過配置檔案指定
        


3、SpringBoot2.x非同步任務實戰(核心知識)
     簡介:講解什麼是非同步任務,和使用SpringBoot2.x開發非同步任務實戰
         1、什麼是非同步任務和使用場景:適用於處理log、傳送郵件、簡訊……等
             下單介面->查庫存 100
                     餘額校驗 150
                     風控使用者100
                     ....


         2、啟動類裡面使用@EnableAsync註解開啟功能,自動掃描
        
         3、定義非同步任務類並使用@Component標記元件被容器掃描,非同步方法加上@Async
             注意點:
                 1)要把非同步任務封裝到類裡面,不能直接寫到Controller
                 2)增加Future<String> 返回結果 AsyncResult<String>("task執行完成"); 
                 3)如果需要拿到結果 需要判斷全部的 task.isDone()
         4、通過注入方式,注入到controller裡面,如果測試前後區別則改為同步則把Async註釋掉