SpringBoot项目@Scheduled读取动态参数

2022年9月7日10:15:39

1、基于@Scheduled可配置开发

application.propertites:

read.timer.parmas=0 0/1 * * * *
定时类:
@Component
public 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
@EnableScheduling
public 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 * * * * *"
  • 作者:郝少
  • 原文链接:https://blog.csdn.net/hyj_king/article/details/98874541
    更新时间:2022年9月7日10:15:39 ,共 1130 字。