亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

SpringBoot如何動態修改Scheduled(系統啟動默認執行,動態修改)

瀏覽:9日期:2023-02-27 08:01:52
SpringBoot 動態修改Scheduled場景:

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

例如:

系統啟動 讀取時間 Cron : 0 0 3 * * ? ,通過執行后臺方法 可以動態配置 Cron 時間格式,并且清楚掉原本執行任務,執行新的設置定時任務時間

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

private ThreadPoolTaskScheduler threadPoolTaskScheduler;private ScheduledFuture<?> future;

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

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

以上邏輯 ----------------------- 就可以實現 動態 Scheduled 配置

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

1、@Order 并實現 CommandLineRunner 類 重寫方法 run

@Override public void run(String... args) throws Exception {logger.info('系統啟動 默認設置對賬任務 時間');//獲取目前DB 設置的對賬時間GetBillTimeResp time = systemConfigService.getTime();//獲取Cron時間格式字符串String timeCron = billTimeCronFormat(time.getBillTime());logger.info('時間為:'+timeCron);//Scheduler 設置每天執行。。。threadPoolTaskScheduler = new ThreadPoolTaskScheduler();threadPoolTaskScheduler.initialize();future=threadPoolTaskScheduler.schedule(object,new CronTrigger('DB Cron時間格式字符串')); }SpringBoot項目@Scheduled讀取動態參數1、基于@Scheduled可配置開發

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

定時類:

@Componentpublic 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、基于代碼實現

(1)核心代碼

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

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

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

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Spring
主站蜘蛛池模板: 免费网站www7788con | 国产精品久久久久影院免费 | 日韩精品免费一级视频 | 亚洲精品久久99久久一 | 手机在线观看黄色 | 黄色一级美女 | 国产福利一区二区在线观看 | 黄色成人在线视频 | 欧美日韩中文一区二区三区 | 成 人 黄 色 全 集 | 日本一级毛片免费看 | 日韩亚洲欧美视频 | 免费簧片在线观看 | 免费成年人在线观看视频 | 黄视频国产 | 永久免费视频v片www | 永久免费aavv视频播放 | 精品亚洲视频在线 | 91久久精品 | 欧美精品一区二区三区视频 | 亚洲色图100p | 日韩精品视频免费 | 最新国产精品视频免费看 | 国产免费播放一区二区三区 | 欧洲免费极品videos | 正在播放宾馆露脸对白视频 | 久久综合九色综合欧美播 | 永久免费在线观看视频 | 99久久精品国产一区二区 | 午夜久久久久久亚洲国产精品 | 一级做人爰a全过程免费视频 | 婷婷亚洲天堂 | 国模午夜写真福利视频在线 | 免费日本黄色 | 一 级 黄 色 大片 | 日韩大片免费看 | 国产精品黄在线观看免费软件 | 国产美女精品自拍 | 中国女人野外做爰视频在线看 | 一级黄色免费观看 | 日本三级黄色片网站 |