zl程序教程

您现在的位置是:首页 >  其他

当前栏目

ruoyi-vue版本(七)定时任务 相关的源码解析,也就是ruoyi-quartz 模块的解析

2023-02-26 09:52:27 时间

目录

1 需求

我们打开若依项目,看到页面上有一个定时任务模块

我们接下来就是解析若依项目和定时任务相关的所有的文件,以及他是如何实现定时的,背后的逻辑是什么,如果我想要在我自己的项目里面实现这个逻辑,那么我需要复制哪些文件,或者咋修改一下就可以在我自己的项目里面实现这个定时功能

2 解析

这个模块里面,就是和定时相关的所有的东西,我们就是要看这个里面是咋实现定时功能的

首先是实现定时功能,那么就得使用第三方的依赖,我们先看下pom文件里面引入了哪些第三方的依赖

这个模块只是引入了一个第三方的定时的jar包,我们的代码就是要使用这个jar包里面的一些api进行实现定时功能了。目前是已经引入人家都jar包了

这个定时功能是需要两个表

定时任务调度日志表 sys_job_log 定时任务调度表 sys_job

没错,若依项目就是靠这两个表实现了定时的功能

以下是表对应的实体类

我们从页面上面的操作开始解析对应操作的逻辑

2.1 工具类里面的关系

关于实现定时功能,其实就是使用反射的形式进行执行具体的方法,因为我们在新增任务的时候,已经将方法的绝对路径写上了,那么之后代码里面就是根据这个绝对路径,找到对应的方法,然后执行这个方法;使用反射执行方法

2.2 新增定时任务

新增的页面,写完对应的东西之后,就点击确定,就会保存定时任务

我们打开f12 ,看下新增会调用那个接口

在我们的代码里面,找到这个接口

这个接口是以实体类的形式进行接收的

传值是

我们进入实体类,看下每一个属性代表的意思

这个调用方法 的值是 类名.方法名

  /** 调用目标字符串   无参数 ryTask.ryNoParams    有参数 ryTask.ryParams('ry')
     * 多参数 ryTask.ryMultipleParams('ry', true, 2000L, 316.50D, 100) */
    @Excel(name = "调用目标字符串 -- 就是执行的方法名称")
    private String invokeTarget;
    /** cron计划策略 */
    @Excel(name = "计划策略 ", readConverterExp = "0=默认,1=立即触发执行,2=触发一次执行,3=不触发立即执行")
    private String misfirePolicy = ScheduleConstants.MISFIRE_DEFAULT;
   /** 是否并发执行(0允许 1禁止) */
    @Excel(name = "并发执行", readConverterExp = "0=允许,1=禁止")
    private String concurrent;

    /** 任务状态(0正常 1暂停) */
    @Excel(name = "任务状态", readConverterExp = "0=正常,1=暂停")
    private String status;

这个新增的逻辑里面,只是将任务的信息保存到数据库,还有将信息放到scheduler调度器对象里面;

2.3 回显定时任务

就是点击了修改按钮,弹出的框里面将 任务的信息进行展示

只是一个查询数据库,进行展示,没有逻辑

2.4 修改定时任务

就是点击修改按钮,根据任务ID 更新数据库的信息;

还有scheduler调度器对象里面任务信息更新;

3 总结

springboot启动后scheduler实例会自动start