SpringBoot怎么动态修改Scheduled
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,本篇内容主要讲解"SpringBoot怎么动态修改Scheduled",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"SpringBoot怎么动态修改Sche
千家信息网最后更新 2025年11月07日SpringBoot怎么动态修改Scheduled
本篇内容主要讲解"SpringBoot怎么动态修改Scheduled",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"SpringBoot怎么动态修改Scheduled"吧!
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 * * * * *"
到此,相信大家对"SpringBoot怎么动态修改Scheduled"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
动态
时间
任务
方法
逻辑
配置
格式
代码
后台
字符
字符串
项目
内容
系统
学习
实用
更深
清楚
兴趣
办法
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
国开电大计算机网络技术专科论文
女生网络技术
网络技术和大数据应用技术
四川源升软件开发有限公司
html导出数据库图片路径
中信银行软件开发中心情况
景晓军软件开发公司
合肥服务器回收企业
莱芜pc软件开发哪家好
服务器主机无限重启
交换机 代理服务器
初中学习计算机软件开发
宁夏数据库通用多路锁控板装备
软件开发企业成本分析
西电数据库技术与应用考试题
计算机网络技术b卷答案
山东嵌入式软件开发价格
花卉网站数据库表
acb是哪个数据库的
网络安全自主可控公司
谷歌商城与服务器通信时出现问题
一个视频搞懂服务器
搭建网站需要多大服务器
十堰市软件开发学校
广东省海洋产业系统专利数据库
服务器 安卓
花卉网站数据库表
澳门天驱企业级服务器云空间
哪个服务器战场快
网络安全自主可控公司