若依学习——定时任务代码逻辑 详细梳理(springboot整合Quartz)

这篇具有很好参考价值的文章主要介绍了若依学习——定时任务代码逻辑 详细梳理(springboot整合Quartz)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

springboot整合Quartz

关于若依定时任务的使用可以去看视频默认定时任务的使用

关于springboot整合quartz的整合参考

(150条消息) 定时任务框架Quartz-(一)Quartz入门与Demo搭建_quarzt_是Guava不是瓜娃的博客-CSDN博客
(150条消息) SpringBoot整合Quartz_springboot quartz_桐花思雨的博客-CSDN博客

简单来说,启动一个定任务的流程就是这样四步

若依学习——定时任务代码逻辑 详细梳理(springboot整合Quartz)

若依当中的使用

不过若依当中为了实现一些自己的想要的功能写了非常多的逻辑。

需要读者有反射相关的知识。

这是若依的四步。

若依学习——定时任务代码逻辑 详细梳理(springboot整合Quartz)

目录结构

这是若依的定时任务模块,上面主要是有关这任务表sys_job和日志表sys_job_log一些crud,然后调用了untils包的关于定时任务的方法。主要的定时任务操作都是通过下面until包下的类实现的。

若依学习——定时任务代码逻辑 详细梳理(springboot整合Quartz)
若依学习——定时任务代码逻辑 详细梳理(springboot整合Quartz)

对应数据库中的表

若依学习——定时任务代码逻辑 详细梳理(springboot整合Quartz)

比如新增任务的时候,就往sysjob表新增一条数据,然后启动定时任务

若依学习——定时任务代码逻辑 详细梳理(springboot整合Quartz)

因此我们的重点是分析untils下的包

untils包

我们先看看这几个类的关系

若依学习——定时任务代码逻辑 详细梳理(springboot整合Quartz)

因此我们从最上层的ScheduleUtils类开始看,主要分析这个方法createScheduleJob()

还记得最上面讲的创建任务的四个步骤么?

若依学习——定时任务代码逻辑 详细梳理(springboot整合Quartz)
第一步Class<? extends Job> jobClass = getQuartzJobClass(job);

刚刚我们在上面图关系的知道若依定义了两个类继承AbstractQuartzJob类 implements Job接口,两个类唯一的区别就是加了@DisallowConcurrentExecution注解不允许并发执行,两者都调用了jobInvokeUtil类的.invokeMethod(sysJob)方法,

因此若依的详细定时任务逻辑都在JobInvokeUtil.invokeMethod(sysJob);里面

若依学习——定时任务代码逻辑 详细梳理(springboot整合Quartz)
若依学习——定时任务代码逻辑 详细梳理(springboot整合Quartz)

是否并发对应前端这里

若依学习——定时任务代码逻辑 详细梳理(springboot整合Quartz)
(全文重点)JobInvokeUtil.invokeMethod(sysJob);
  1. 第一部分获取了调用方的相关参数

  1. 第二部分判断调用形式(若依支持两种调用,bean调用和全类名调用,可看下图)

若依学习——定时任务代码逻辑 详细梳理(springboot整合Quartz)
若依学习——定时任务代码逻辑 详细梳理(springboot整合Quartz)
  1. invokeMethod方法这里通过反射进行获取调用方法的参数和名称,然后进行调用

若依学习——定时任务代码逻辑 详细梳理(springboot整合Quartz)
  1. 现在我们知道我们执行了传入的这个方法,那么这个方法的在哪呢?其实在task包下。所以我们如果想在若依里面实现自己的定时任务,直接在这个包下面写要处理的逻辑就行啦,但是有一点要注意的是若依设置了个白名单,因此这些自定义的定时任务逻辑要卸载con.ruoyi包下。

若依学习——定时任务代码逻辑 详细梳理(springboot整合Quartz)
若依学习——定时任务代码逻辑 详细梳理(springboot整合Quartz)

设置了白名单

若依学习——定时任务代码逻辑 详细梳理(springboot整合Quartz)
第二步构建JobDetail
若依学习——定时任务代码逻辑 详细梳理(springboot整合Quartz)

这里的jobId和jobGroup对应的是

若依学习——定时任务代码逻辑 详细梳理(springboot整合Quartz)
第三步构建trigger
若依学习——定时任务代码逻辑 详细梳理(springboot整合Quartz)

前面两行代码对应的就是这两个文章来源地址https://www.toymoban.com/news/detail-443615.html

若依学习——定时任务代码逻辑 详细梳理(springboot整合Quartz)
第四步把任务给调度器
若依学习——定时任务代码逻辑 详细梳理(springboot整合Quartz)

到了这里,关于若依学习——定时任务代码逻辑 详细梳理(springboot整合Quartz)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • springboot 与异步任务,定时任务,邮件任务

    在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的;但是在处理与第三方系统交互的时候,容易造成响应迟缓的情况,之前大部分都是使用多线程来完成此类任务,其实,在Spring 3.x之后,就已经内置了@Async来完美解决这个问题。 SpringBoot 实现比较简单 主启

    2024年02月10日
    浏览(41)
  • 【springboot】springboot定时任务:

    一、文档: 【cron表达式在线生成器】https://cron.qqe2.com/ 二、案例:

    2024年02月11日
    浏览(47)
  • SpringBoot——Quartz 定时任务

    优质博文:IT-BLOG-CN 【1】添加 Scheduled 相关依赖,它是 Spring 自带的一个 jar 包因此引入 Spring 的依赖: 【2】导入依赖之后,就可以在 Maven Dependencies 中看到相关的依赖,如下: 【3】编写定时任务类:重点是 @Scheduled 注解和 cron 属性; 【4】在启动类中开启定时任务的启动:

    2024年02月05日
    浏览(43)
  • [SpringBoot系列] 定时任务

    假设我们已经搭建好了一个基于Spring Boot项目,首先我们要在Application中设置启用定时任务功能@EnableScheduling 启动定时任务 其中 @EnableScheduling 注解的作用是发现注解@Scheduled的任务并后台执行。 定时任务具体实现类 接下来我们来创建一个定时任务 运行Spring Boot,输出结果为如

    2023年04月20日
    浏览(75)
  • springboot:定时任务

    目录 一、实现定时任务的方法一:基于JDK 方法一:使用JDK自带的Timer类 法二:使用ScheduleExecutorsService类 二、基于Spring Task实现定时任务(推荐使用)  三、基于Quartz实现定时调度 四、使用分布式定时任务框架:elastic-job 五、分布式任务调度:国产组件XXL-Job 定时任务在项目中的

    2024年02月16日
    浏览(54)
  • springBoot 定时任务设计

    【定时任务】Spring Boot 定时执行任务详解,每天定时几点钟执行任务_spingboot 定时在时间尾数是0或者5的时候执行_紫陌520的博客-CSDN博客 Springboot开启定时任务,cron表达式的写法_cron 22点_暖风ii的博客-CSDN博客

    2024年02月16日
    浏览(39)
  • springboot---定时任务实现

    任意类中创建一个方法,将该方法用@scheduled注解修饰,然后在项目的主方法上添加@EnableScheduling注解,定时任务就会生效。 但是需要注意的是定时任务不会一开始就执行,会等待设定的时间 1.2.1. cron cron表达式是一个字符串,字符串以5或6个空格隔开,分开共6或7个域,每一个

    2024年02月11日
    浏览(38)
  • SpringBoot——Scheduled定时任务

    目录 1.静态定时任务 2.动态定时任务 在一些业务场景中,我们需要定义一些任务在我们指定的时间或是每隔一个时间段就自动执行,来作为任务的前提,保证业务的执行。比如:我们需要一个定时任务,每天早上6点执行,对数据库中的某个日期字段进行修改,修改为当天时

    2023年04月17日
    浏览(36)
  • SpringBoot 实现定时任务

    定时任务在实际项目开发中很常见,并且定时任务可以在各种场景中应用,通过自动化操作和任务的规模化管理,提高效率、可靠性和工作质量。可以减少手动操作,避免疏忽和错误,并节省时间和人力资源的投入 简单易用: 使用注解驱动的方式,简化了定时任务的配置和

    2024年02月12日
    浏览(56)
  • 【SpringBoot笔记】定时任务(cron)

    定时任务就是在固定的时间执行某个程序,闹钟的作用。 1.在启动类上添加注解 2.创建定时任务类 在这个类里面使用表达式设置什么时候执行 cron 表达式(也叫七子表达式),设置执行规则 在线生成 cron 表达式工具:在线Cron表达式生成器 比如每隔 5 秒执行一次  比如每天凌

    2024年02月13日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包