• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Java > Spring Boot实现动态更新任务的方法

Spring Boot实现动态更新任务的方法

作者:huanxi 字体:[增加 减小] 来源:互联网 时间:2017-05-28

huanxi 通过本文主要向大家介绍了spring boot 定时任务,spring boot教程,spring boot,spring boot是什么,spring boot入门等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

前言

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>
</div>

在 application.yml 中增加 cron ,默认一秒钟执行一次

cron:
 pattern: 0/1 * * * * ?
</div>

创建 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...");
 }
}
</div>

在 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();
 }
 }
}
</div>

写到这里,其实还没有实现动态更改 cron 表达式。

接下来我们可以通过 api 来动态更改。

在我们的 Controller 中,增加一个方法

@PostMapping(value = "/cron")
 public String changeDynamicCron(String cron) {
 userDynamicJob.setCron(cron);
 return "Success";
 }
</div>

这样,通过调用 localhost:8080/corn?corn=0/10 * * * * ?

就可以实现每 10 秒执行一次了。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Spring Boot下的Job定时任务
  • Spring Boot实现动态更新任务的方法
  • Spring Boot定时任务的使用实例代码
  • Spring Boot下的Job定时任务
  • Spring Boot实现动态更新任务的方法
  • Spring Boot定时任务的使用实例代码

相关文章

  • 2017-05-28SpringBoot远程访问redis服务器问题剖析
  • 2017-05-28SpringBoot加载静态资源的方式
  • 2017-05-28Java中的InputStreamReader和OutputStreamWriter源码分析_动力节点Java学院整理
  • 2017-05-28Java使用Spring发送邮件的实现代码
  • 2017-05-28java读取txt文件代码片段
  • 2017-05-28Java使用join方法暂停当前线程
  • 2017-05-28java实例方法被覆盖,静态方法被隐藏Explain(详解)
  • 2017-05-28Java 队列 Queue 用法实例详解
  • 2017-05-28java IO 字节流详解及实例代码
  • 2017-05-28Java 线程优先级详解及实例

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 大括号{}的意义与静态代码块与构造函数的加载关系
    • SpringMVC接收页面表单参数
    • Java中终止线程的方法详解
    • Java中的对象流总结(必看篇)
    • java利用delayedQueue实现本地的延迟队列
    • Spring boot实现文件上传实例(多文件上传)
    • JAVA中ListIterator和Iterator详解与辨析(推荐)
    • java 中Collection存储器详解及简单实例
    • 关于Java中的IO流总结(推荐)
    • Spring+SpringMVC+MyBatis深入学习及搭建(二)之MyBatis原始Dao开发和mapper代理开发

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有