千家信息网

SpringBoot项目中怎么使用@Scheduled读取动态参数

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容主要讲解"SpringBoot项目中怎么使用@Scheduled读取动态参数",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"SpringBoot项目
千家信息网最后更新 2026年11月01日SpringBoot项目中怎么使用@Scheduled读取动态参数

本篇内容主要讲解"SpringBoot项目中怎么使用@Scheduled读取动态参数",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"SpringBoot项目中怎么使用@Scheduled读取动态参数"吧!

    使用@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 boot Scheduled动态配置

    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@Log4j2public class MyDynamicTask implements SchedulingConfigurer {//实现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("-------------------------------执行"+cron);                taskService.monDay();//真正需要运行的逻辑代码            }        };    }    private Trigger getTrigger() {        return new Trigger() {            @Override            public Date nextExecutionTime(TriggerContext triggerContext) {                // 触发器                CronTrigger trigger = new CronTrigger(getCron());                return trigger.nextExecutionTime(triggerContext);            }        };    }    public String getCron() {        Jedis jedis = commonUtil.getJedis();        String newCron =  jedis.get("cron");//可以改成配置到数据库中        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;    }}

    到此,相信大家对"SpringBoot项目中怎么使用@Scheduled读取动态参数"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    动态 参数 项目 代码 任务 方法 配置 内容 逻辑 学习 实用 更深 兴趣 周期 实用性 实际 接口 操作简单 数据 数据库 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州为想互联网科技有限公司 中关村互联网 科技集团 北京路客互联网科技有限公司 科技互联网公司装修 科技类互联网 金融科技创新监管互联网金融 远拓互联网科技 汇久创客互联网科技 互联网女皇 腾讯科技 互联网前沿科技 顶级互联网科技成果有哪些 互联网软件和科技 互联网科技大奖都有哪些公司 玉溪新华互联网科技好不好 抖集互联网科技技术咨询 互联网科技平台产品运营 求路客互联网科技电话 安徽九吞吴互联网科技有限公司 恒生互联网科技趋势 互联网 科技节活动 微视频大赛 互联网科技公司简介 广州百单互联网科技有限公司 A股互联网金融科技公司 互联网巨头科技公司 互联网科技资迅 安控科技rtu产品工业互联网 工业互联网展湾科技股份有限公司 互联网时代的科技公司 四川互联网展示科技馆设计 中国主要互联网科技公司
    0