學院網(wǎng)站建設管理規(guī)章制度下載百度app最新版到桌面
springboot整合Quartz
關于若依定時任務的使用可以去看視頻默認定時任務的使用
關于springboot整合quartz的整合參考
(150條消息) 定時任務框架Quartz-(一)Quartz入門與Demo搭建_quarzt_是Guava不是瓜娃的博客-CSDN博客
(150條消息) SpringBoot整合Quartz_springboot quartz_桐花思雨的博客-CSDN博客
簡單來說,啟動一個定任務的流程就是這樣四步

若依當中的使用
不過若依當中為了實現(xiàn)一些自己的想要的功能寫了非常多的邏輯。
需要讀者有反射相關的知識。
這是若依的四步。

目錄結構
這是若依的定時任務模塊,上面主要是有關這任務表sys_job和日志表sys_job_log一些crud,然后調用了untils包的關于定時任務的方法。主要的定時任務操作都是通過下面until包下的類實現(xiàn)的。


對應數(shù)據(jù)庫中的表

比如新增任務的時候,就往sysjob表新增一條數(shù)據(jù),然后啟動定時任務

因此我們的重點是分析untils下的包
untils包
我們先看看這幾個類的關系

因此我們從最上層的ScheduleUtils類開始看,主要分析這個方法createScheduleJob()
還記得最上面講的創(chuàng)建任務的四個步驟么?

第一步Class<? extends Job> jobClass = getQuartzJobClass(job);
剛剛我們在上面圖關系的知道若依定義了兩個類繼承AbstractQuartzJob類 implements Job接口,兩個類唯一的區(qū)別就是加了@DisallowConcurrentExecution注解不允許并發(fā)執(zhí)行,兩者都調用了jobInvokeUtil類的.invokeMethod(sysJob)方法,
因此若依的詳細定時任務邏輯都在JobInvokeUtil.invokeMethod(sysJob);里面


是否并發(fā)對應前端這里

(全文重點)JobInvokeUtil.invokeMethod(sysJob);
第一部分獲取了調用方的相關參數(shù)
第二部分判斷調用形式(若依支持兩種調用,bean調用和全類名調用,可看下圖)


invokeMethod方法這里通過反射進行獲取調用方法的參數(shù)和名稱,然后進行調用

現(xiàn)在我們知道我們執(zhí)行了傳入的這個方法,那么這個方法的在哪呢?其實在task包下。所以我們如果想在若依里面實現(xiàn)自己的定時任務,直接在這個包下面寫要處理的邏輯就行啦,但是有一點要注意的是若依設置了個白名單,因此這些自定義的定時任務邏輯要卸載con.ruoyi包下。


設置了白名單

第二步構建JobDetail

這里的jobId和jobGroup對應的是

第三步構建trigger

前面兩行代碼對應的就是這兩個

第四步把任務給調度器
