SpringBoot如何動態(tài)修改Scheduled(系統(tǒng)啟動默認(rèn)執(zhí)行,動態(tài)修改)_第1頁
SpringBoot如何動態(tài)修改Scheduled(系統(tǒng)啟動默認(rèn)執(zhí)行,動態(tài)修改)_第2頁
SpringBoot如何動態(tài)修改Scheduled(系統(tǒng)啟動默認(rèn)執(zhí)行,動態(tài)修改)_第3頁
SpringBoot如何動態(tài)修改Scheduled(系統(tǒng)啟動默認(rèn)執(zhí)行,動態(tài)修改)_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第SpringBoot如何動態(tài)修改Scheduled(系統(tǒng)啟動默認(rèn)執(zhí)行,動態(tài)修改)可配置的Scheduled執(zhí)行時間,正常的Scheduled是在項目啟動的時候固定死的,沒辦法根據(jù)調(diào)用后臺代碼自動更新Scheduled執(zhí)行時間

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

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

privateThreadPoolTaskSchedulerthreadPoolTaskScheduler;

privateScheduledFuturefuture;

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

threadPoolTaskScheduler=newThreadPoolTaskScheduler();

threadPoolTaskScheduler.initialize();

if(future!=null){

future.cancel(true);

future=threadPoolTaskScheduler.schedule(object,newCronTrigger("需要Cron時間格式字符串"));

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

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

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

@Override

publicvoidrun(String...args)throwsException{

("系統(tǒng)啟動默認(rèn)設(shè)置對賬任務(wù)時間");

//獲取目前DB設(shè)置的對賬時間

GetBillTimeResptime=systemConfigService.getTime();

//獲取Cron時間格式字符串

StringtimeCron=billTimeCronFormat(time.getBillTime());

("時間為:"+timeCron);

//Scheduler設(shè)置每天執(zhí)行。。。

threadPoolTaskScheduler=newThreadPoolTaskScheduler();

threadPoolTaskScheduler.initialize();

future=threadPoolTaskScheduler.schedule(object,newCronTrigger("DBCron時間格式字符串"));}

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

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

pertites:

read.timer.parmas=00/1****

定時類:

@Component

publicclassScheduledService{

Loggerlogger=LoggerFactory.getLogger(ScheduledService.class);

@Scheduled(cron="${read.timer.parmas}")

publicvoidreadConfigTable(){

("*****.read.timer.parmas");

}

啟動類:

@SpringBootApplication

@EnableScheduling//必須

publicclassDataApplication{

publicstaticvoidmain(String[]args){

SpringApplication.run(DataApplication.class,args);

}

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

(1)核心代碼

@Component

@EnableScheduling

publicclassTestScheduledParamsimplementsSchedulingConfigurer{

Loggerlogger=LoggerFactory.getLogger(TestScheduledParams.class);

publicstaticStringDEFAULT_CORN="0/3*****";

//##動態(tài)傳參要給默認(rèn)值。

publicstaticStringcorn=DEFAULT_CORN;

@Override

publicvoidconfigureTasks(ScheduledTaskRegistrartaskRegistrar){

taskRegistrar.addTriggerTask(newRunnable(){

@Override

publicvoidrun(){

//("定時任務(wù)邏輯");

},newTrigger(){

@Override

publicDatenextExecutionTime(TriggerContexttriggerContext){

//任務(wù)觸發(fā),可修改任務(wù)的執(zhí)行周期

CronTriggercronTrigger=newCronTrigger(corn);

Datedate=cronTrigger.nextExecutionTi

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論