SpringBoot怎么动态修改Scheduled
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,本篇内容主要讲解"SpringBoot怎么动态修改Scheduled",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"SpringBoot怎么动态修改Sche
千家信息网最后更新 2025年02月23日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安全错误
数据库的锁怎样保障安全
jeesite4数据库
2008服务器搭建域
国家网络安全宣传主场
为什么幻塔只有俩个服务器
服务器扫描二维码显示应用程序
网络安全电视剧腾讯
吉林省网络安全法培训
《网络安全法》自 起实施
如何测试服务器硬盘IO
服务器存储容量
阿里云平台数据库微服务
直销软件开发就找直销大师
如何在数据库上加入图片
电脑网络安全证书下载
学生租服务器
服务器网卡可以配置不同网关吗
oracle查询当前数据库
云服务器安全组怎么用
小学一年级网络安全教育课件
数据库技术挂科
数据库有数据损坏
网络安全趣味知识ppt
用服务器做网站空间
数据库了8E减3是一个
数据库模型有概念模型
数据库备注文件为什么是dct
数据库表中任意两列值不同
服务器怎么用azure管理
清理sql数据库日志命令
服务器安全 西安