最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot如何動態(tài)修改Scheduled(系統(tǒng)啟動默認執(zhí)行,動態(tài)修改)

 更新時間:2021年07月07日 10:30:31   作者:Architect劍  
這篇文章主要介紹了SpringBoot如何動態(tài)修改Scheduled(系統(tǒng)啟動默認執(zhí)行,動態(tài)修改)的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

SpringBoot 動態(tài)修改Scheduled

場景:

可配置的 Scheduled 執(zhí)行時間,正常的 Scheduled 是在項目啟動的時候固定死的,沒辦法根據(jù)調(diào)用后臺代碼自動更新 Scheduled 執(zhí)行時間

例如:

系統(tǒng)啟動 讀取時間 Cron : 0 0 3 * * ? ,通過執(zhí)行后臺方法 可以動態(tài)配置 Cron 時間格式,并且清楚掉原本執(zhí)行任務(wù),執(zhí)行新的設(shè)置定時任務(wù)時間

1、根據(jù) ThreadPoolTaskScheduler 、ScheduledFuture 類 動態(tài)修改定時任務(wù)(ThreadPoolTaskScheduler 這個類 不能使用@Autowired ,直接定義成員變量 )

private ThreadPoolTaskScheduler threadPoolTaskScheduler;
private ScheduledFuture<?> future;

2、動態(tài)修改 Scheduled 后臺方法邏輯(object 是 Runnable 實現(xiàn)類 需要執(zhí)行的定時邏輯,放到run 線程方法內(nèi))

threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
threadPoolTaskScheduler.initialize();
if(future!=null){
    future.cancel(true);
}
future=threadPoolTaskScheduler.schedule(object,new CronTrigger("需要Cron時間格式字符串") );

以上邏輯 ----------------------- 就可以實現(xiàn) 動態(tài) Scheduled 配置

以下邏輯 ----------------------- 配置項目啟動 自動讀取 DB Cron 設(shè)置定時

1、@Order 并實現(xiàn) CommandLineRunner 類 重寫方法 run

    @Override
    public void run(String... args) throws Exception {
        logger.info("系統(tǒng)啟動 默認設(shè)置對賬任務(wù) 時間");
        //獲取目前DB 設(shè)置的對賬時間
        GetBillTimeResp time = systemConfigService.getTime();
        //獲取Cron時間格式字符串
        String timeCron = billTimeCronFormat(time.getBillTime());
        logger.info("時間為:"+timeCron);
        //Scheduler 設(shè)置每天執(zhí)行。。。
        threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
        threadPoolTaskScheduler.initialize();
        future=threadPoolTaskScheduler.schedule(object,new CronTrigger("DB Cron時間格式字符串")); }

SpringBoot項目@Scheduled讀取動態(tài)參數(shù)

1、基于@Scheduled可配置開發(fā)

application.propertites: 
read.timer.parmas=0 0/1 * * * *

定時類:

@Component
public class ScheduledService {
Logger logger= LoggerFactory.getLogger(ScheduledService.class);
    @Scheduled(cron = "${read.timer.parmas}")
    public void readConfigTable(){
        logger.info("*****.read.timer.parmas");
    }
}

啟動類:

@SpringBootApplication
@EnableScheduling  //必須
public class DataApplication {
  public static void main(String[] args) {
        SpringApplication.run(DataApplication.class,args);
    }
}

2、基于代碼實現(xiàn)

(1)核心代碼

@Component
@EnableScheduling
public class TestScheduledParams implements SchedulingConfigurer{
    Logger logger= LoggerFactory.getLogger(TestScheduledParams.class);
 
    public static  String DEFAULT_CORN="0/3 * * * * *";
    //##動態(tài)傳參要給默認值。
    public static String corn=DEFAULT_CORN;
    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {     
        taskRegistrar.addTriggerTask(new Runnable() {
            @Override
            public void run() {
               // logger.info("定時任務(wù)邏輯");
            }
        }, new Trigger() {
            @Override
            public Date nextExecutionTime(TriggerContext triggerContext) {
                //任務(wù)觸發(fā),可修改任務(wù)的執(zhí)行周期
                CronTrigger cronTrigger = new CronTrigger(corn);
                Date date = cronTrigger.nextExecutionTime(triggerContext);
                return date;
            }
        });
    }
}

(2)其他類或方法動態(tài)傳參賦值

TestScheduledParams.corn="0/20 * * * * *"

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java源碼解析Integer方法解讀

    Java源碼解析Integer方法解讀

    這篇文章主要介紹了Java源碼解析Integer方法解讀,包括toString方法、toUnsignedString方法、highestOneBit方法等,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • java 交換兩個數(shù)據(jù)的方法實例詳解

    java 交換兩個數(shù)據(jù)的方法實例詳解

    這篇文章主要介紹了java 交換兩個數(shù)據(jù)的方法實例詳解的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • mybatis之批量添加問題

    mybatis之批量添加問題

    這篇文章主要介紹了mybatis之批量添加問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • MyBatis驗證多級緩存及 Cache Aside 模式的應(yīng)用小結(jié)

    MyBatis驗證多級緩存及 Cache Aside 模式的應(yīng)用小結(jié)

    本文介紹了MyBatis的多級緩存機制,包括本地緩存和全局緩存,并通過Spock測試框架驗證了多級緩存的實現(xiàn),本文結(jié)合實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • java基礎(chǔ)理論Stream的Filter與謂詞邏輯

    java基礎(chǔ)理論Stream的Filter與謂詞邏輯

    這篇文章主要為大家介紹了java基礎(chǔ)理論Stream的Filter與謂詞邏輯,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • java實現(xiàn)圖形卡片排序游戲

    java實現(xiàn)圖形卡片排序游戲

    這篇文章主要為大家詳細介紹了java實現(xiàn)圖形卡片排序游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • Spring Cloud Gateway去掉url前綴

    Spring Cloud Gateway去掉url前綴

    這篇文章主要介紹了Spring Cloud Gateway去掉url前綴的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java之Swagger配置掃描接口以及開關(guān)案例講解

    Java之Swagger配置掃描接口以及開關(guān)案例講解

    這篇文章主要介紹了Java之Swagger配置掃描接口以及開關(guān)案例講解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Java高并發(fā)之CyclicBarrier的用法詳解

    Java高并發(fā)之CyclicBarrier的用法詳解

    CyclicBarrier 是 Java 中的一種同步工具,它可以讓多個線程在一個屏障點處等待,直到所有線程都到達該點后,才能繼續(xù)執(zhí)行。本文就來和大家聊聊它的用法,需要的可以參考一下
    2023-03-03
  • idea創(chuàng)建spring boot工程及配置文件(最新推薦)

    idea創(chuàng)建spring boot工程及配置文件(最新推薦)

    本文給大家介紹idea創(chuàng)建spring boot工程及配置文件,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-11-11

最新評論

邵武市| 聂拉木县| 迭部县| 上饶县| 日喀则市| 通山县| 全南县| 文登市| 广宁县| 曲松县| 井冈山市| 南充市| 仁寿县| 泰州市| 大余县| 固原市| 尤溪县| 磴口县| 诸暨市| 昌都县| 依兰县| 开阳县| 西城区| 会东县| 玉屏| 肥西县| 嘉峪关市| 镇赉县| 廊坊市| 乐东| 门源| 韩城市| 云林县| 武夷山市| 开阳县| 河源市| 临城县| 涿州市| 南投县| 江陵县| 湘乡市|