目录
- 1 需求
- 2 解析
- 2.1 工具类里面的关系
- 2.2 新增定时任务
- 2.3 回显定时任务
- 2.4 修改定时任务
- 3 总结
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