ruoyi-vue版本(七)定时任务 相关的源码解析,也就是ruoyi-quartz 模块的解析
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
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
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |