日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring的@Scheduled 动态更新cron表达式

發(fā)布時間:2024/7/23 javascript 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring的@Scheduled 动态更新cron表达式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

常見的本地定時寫法如下:

@Scheduled(cron = "0/5 * * * * ?")private void test() {log.info("業(yè)務處理邏輯。。。5秒一次");}

如果想要動態(tài)更新cron表達式,可以這樣寫:
先寫一個類,讓cron表達式總是讀成員變量的值。
再寫一個controller,通過調用set方法就可以動態(tài)設置這個cron表達式了

@Lazy(false) @Component @EnableScheduling public class SpringDynamicCornTask implements SchedulingConfigurer {private static final Logger logger = LoggerFactory.getLogger(SpringDynamicCornTask.class);private static final String DEFAULT_CRON = "0/5 * * * * ?";private String cron = DEFAULT_CRON;@Overridepublic void configureTasks(ScheduledTaskRegistrar taskRegistrar) {taskRegistrar.addTriggerTask(() -> {logger.info("真正的任務執(zhí)行邏輯。。。");}, triggerContext -> {CronTrigger trigger = new CronTrigger(cron);return trigger.nextExecutionTime(triggerContext);});}public void setCron(String cron) {System.out.println("原來的cron:"+this.cron+"更新后的cron:"+cron);this.cron = cron;}public String getCron() {return this.cron;} } @RestController public class TestController {@Autowiredprivate SpringDynamicCornTask springDynamicCornTask;@RequestMapping("/setCron")public String setCron(){springDynamicCornTask.setCron("0/10 * * * * ?");return "success";}@RequestMapping("/getCron")public String getCron(){String cron = springDynamicCornTask.getCron();return "cron:"+cron;} }

直接調用這個/setCron,就可以將cron從5秒一次改為10秒一次。

當然,在這個基礎上把cron移到數據庫中集中管理就不難了。

總結

以上是生活随笔為你收集整理的Spring的@Scheduled 动态更新cron表达式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。