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

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

 更新時(shí)間:2021年11月01日 09:46:02   作者:郝少  
這篇文章主要介紹了SpringBoot項(xiàng)目中使用@Scheduled讀取動(dòng)態(tài)參數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

使用@Scheduled讀取動(dòng)態(tài)參數(shù)

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

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

定時(shí)類:

@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)類:

@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)其他類或方法動(dòng)態(tài)傳參賦值

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

spring boot Scheduled動(dòng)態(tài)配置

package cn.com.suntree.cmp.service;
import cn.com.suntree.cmp.utils.CommonUtil;
import lombok.extern.log4j.Log4j2;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.Trigger;
import org.springframework.scheduling.TriggerContext;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronTrigger;
import org.springframework.stereotype.Component;
import redis.clients.jedis.Jedis;
import java.util.Date;
@Component
@Log4j2
public class MyDynamicTask implements SchedulingConfigurer {//實(shí)現(xiàn)SchedulingConfigurer 接口
    @Autowired
    CommonUtil commonUtil;
    @Autowired
    TaskService taskService;
    private static String cron;
    @Override
    public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {//重寫該方法
        scheduledTaskRegistrar.addTriggerTask(doTask(), getTrigger());
    }
    private Runnable doTask() {
        return new Runnable() {
            @Override
            public void run() {
                log.info("-------------------------------執(zhí)行"+cron);
                taskService.monDay();//真正需要運(yùn)行的邏輯代碼
            }
        };
    }
    private Trigger getTrigger() {
        return new Trigger() {
            @Override
            public Date nextExecutionTime(TriggerContext triggerContext) {
                // 觸發(fā)器
                CronTrigger trigger = new CronTrigger(getCron());
                return trigger.nextExecutionTime(triggerContext);
            }
        };
    }
    public String getCron() {
        Jedis jedis = commonUtil.getJedis();
        String newCron =  jedis.get("cron");//可以改成配置到數(shù)據(jù)庫(kù)中
        if (StringUtils.isEmpty(newCron)) {
            jedis.set("cron","0 30 0 ? * Mon");
            return "0 30 0 ? * Mon";
        }
        if (!newCron.equals(cron)) {
            log.info(new StringBuffer("Cron has been changed to:'").append(newCron).append("'. Old cron was:'").append(cron).append("'").toString());
            cron = newCron;
        }
        return cron;
    }
}

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

相關(guān)文章

最新評(píng)論

威宁| 开阳县| 黎平县| 布尔津县| 南江县| 谷城县| 缙云县| 乐亭县| 武义县| 揭西县| 汝南县| 镇安县| 北安市| 咸阳市| 沁水县| 凌源市| 深州市| 海阳市| 闸北区| 安阳市| 云龙县| 全州县| 石屏县| 汉寿县| 盐城市| 平乡县| 通江县| 万盛区| 哈尔滨市| 明光市| 深州市| 武山县| 师宗县| 闽清县| 扎鲁特旗| 西宁市| 虞城县| 霞浦县| 金昌市| 禹城市| 衡水市|