Spring Boot实现动态更新任务的方法
发布时间 - 2026-01-11 00:53:30 点击率:次前言

SpringBoot 实现动态 Job,可以通过 API 动态变更 cron。
原生的 Job 实现起来很简单,只要用注解 @Scheduled(cron=xxxxxx) 来实现就可以了,但是要实现动态更改 cron ,就需要做点其他的了。
实现方法
在 pom.xml 中添加 quartz-scheduler
<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.3</version> </dependency>
在 application.yml 中增加 cron ,默认一秒钟执行一次
cron: pattern: 0/1 * * * * ?
创建 DynamicScheduledTask.java
public class DynamicScheduledTask implements SchedulingConfigurer {
@Value("${cron.pattern}")
public String pattern;
public void setCron(String cron) {
this.pattern = cron;
}
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.addTriggerTask(new Runnable() {
@Override
public void run() {
doBiz();
}
}, new Trigger() {
@Override
public Date nextExecutionTime(TriggerContext triggerContext) {
// 定时任务触发,可修改定时任务的执行周期
CronTrigger trigger = new CronTrigger(pattern);
Date nextExecDate = trigger.nextExecutionTime(triggerContext);
return nextExecDate;
}
});
}
public void doBiz() {
// do your biz
System.out.println("do biz...");
}
}
在 Application.java 中增加 @EnableScheduling 注解
这样,运行 Application.java 就会每隔一秒执行 Job 了。
如果要实现特定的逻辑,可以继承 DynamicScheduledTask.java,重写 doBiz() 方法。
UserDynamicJob.java
@Component
public class UserDynamicJob extends DynamicScheduledTask {
@Autowired
IUserService userService;
@Override
public void doBiz() {
Map<String, Object> params = new HashMap<>();
try {
User user = userService.selectOne(params);
System.out.println(user);
} catch (DataNotFoundException e) {
e.printStackTrace();
}
}
}
写到这里,其实还没有实现动态更改 cron 表达式。
接下来我们可以通过 api 来动态更改。
在我们的 Controller 中,增加一个方法
@PostMapping(value = "/cron")
public String changeDynamicCron(String cron) {
userDynamicJob.setCron(cron);
return "Success";
}
这样,通过调用 localhost:8080/corn?corn=0/10 * * * * ?
就可以实现每 10 秒执行一次了。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# spring
# boot
# 动态任务
# 动态部署
# 动态加载
# Spring Boot 动态数据源示例(多数据源自动切换)
# SpringBoot定时任务两种(Spring Schedule 与 Quartz 整合 )实现方法
# 详解Spring Boot中使用@Scheduled创建定时任务
# spring boot中使用@Async实现异步调用任务
# 详解SpringBoot定时任务说明
# 就会
# 还没有
# 其他的
# 我们可以
# 可以通过
# 很简单
# 重写
# 写到
# 这篇文章
# 谢谢大家
# 来实现
# 每隔
# 做点
# 就可以
# 只要用
# 在我们的
# 有疑问
# artifactId
# version
# application
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
iOS中将个别页面强制横屏其他页面竖屏
Laravel如何与Pusher实现实时通信?(WebSocket示例)
JS去除重复并统计数量的实现方法
百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
如何在宝塔面板中修改默认建站目录?
JavaScript如何实现倒计时_时间函数如何精确控制
Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录
js代码实现下拉菜单【推荐】
大型企业网站制作流程,做网站需要注册公司吗?
标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何快速生成橙子建站落地页链接?
如何在腾讯云免费申请建站?
5种Android数据存储方式汇总
Laravel如何实现用户注册和登录?(Auth脚手架指南)
油猴 教程,油猴搜脚本为什么会网页无法显示?
java ZXing生成二维码及条码实例分享
Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤
iOS发送验证码倒计时应用
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】
Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】
如何在万网主机上快速搭建网站?
Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决
JS经典正则表达式笔试题汇总
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
html5的keygen标签为什么废弃_替代方案说明【解答】
如何快速搭建高效香港服务器网站?
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
如何在 React 中条件性地遍历数组并渲染元素
零基础网站服务器架设实战:轻量应用与域名解析配置指南
如何在腾讯云服务器快速搭建个人网站?
Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置
Claude怎样写约束型提示词_Claude约束提示词写法【教程】
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
Java解压缩zip - 解压缩多个文件或文件夹实例
Laravel怎么判断请求类型_Laravel Request isMethod用法
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践
Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】
高端建站如何打造兼具美学与转化的品牌官网?
Laravel中的Facade(门面)到底是什么原理
公司网站制作需要多少钱,找人做公司网站需要多少钱?
无锡营销型网站制作公司,无锡网选车牌流程?
如何获取上海专业网站定制建站电话?
如何在阿里云完成域名注册与建站?
如何快速使用云服务器搭建个人网站?
Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】

