成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

SpringBoot怎么動(dòng)態(tài)修改Scheduled

本篇內(nèi)容主要講解“SpringBoot怎么動(dòng)態(tài)修改Scheduled”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“SpringBoot怎么動(dòng)態(tài)修改Scheduled”吧!

成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括定州網(wǎng)站建設(shè)、定州網(wǎng)站制作、定州網(wǎng)頁(yè)制作以及定州網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃等。多年來(lái),我們專(zhuān)注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,定州網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶(hù)以成都為中心已經(jīng)輻射到定州省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶(hù)的支持與信任!

SpringBoot 動(dòng)態(tài)修改Scheduled

場(chǎng)景:

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

例如:

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

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

private ThreadPoolTaskScheduler threadPoolTaskScheduler;
private ScheduledFuture<?> future;

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

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

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

以下邏輯 ----------------------- 配置項(xiàng)目啟動(dòng) 自動(dòng)讀取 DB Cron 設(shè)置定時(shí)

1、@Order 并實(shí)現(xiàn) CommandLineRunner 類(lèi) 重寫(xiě)方法 run

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

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

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

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

定時(shí)類(lèi):

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

啟動(dòng)類(lèi):

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

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

(1)核心代碼

@Component
@EnableScheduling
public class TestScheduledParams implements SchedulingConfigurer{
    Logger logger= LoggerFactory.getLogger(TestScheduledParams.class);
 
    public static  String DEFAULT_CORN="0/3 * * * * *";
    //##動(dòng)態(tài)傳參要給默認(rèn)值。
    public static String corn=DEFAULT_CORN;
    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {     
        taskRegistrar.addTriggerTask(new Runnable() {
            @Override
            public void run() {
               // logger.info("定時(shí)任務(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)其他類(lèi)或方法動(dòng)態(tài)傳參賦值

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

到此,相信大家對(duì)“SpringBoot怎么動(dòng)態(tài)修改Scheduled”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!

當(dāng)前文章:SpringBoot怎么動(dòng)態(tài)修改Scheduled
新聞來(lái)源:http://jinyejixie.com/article14/jojpge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷(xiāo)、搜索引擎優(yōu)化、網(wǎng)頁(yè)設(shè)計(jì)公司電子商務(wù)、網(wǎng)站設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名
上犹县| 澄江县| 开封县| 溆浦县| 治多县| 武清区| 巴彦县| 马公市| 民丰县| 织金县| 商丘市| 涿州市| 淮滨县| 师宗县| 铁岭市| 奉节县| 忻州市| 厦门市| 房山区| 西安市| 通榆县| 土默特左旗| 德惠市| 濮阳市| 威海市| 万安县| 通许县| 长泰县| 中江县| 华安县| 上饶县| 准格尔旗| 定南县| 菏泽市| 金秀| 台北市| 津市市| 沁水县| 佛山市| 荃湾区| 马鞍山市|