SpringBoot整合Quartz定時任務的實現

2021-10-02 12:49:16 字數 3160 閱讀 2640

前言

quartz 設計有三個核心類,分別是 scheduler(排程器)job(任務)和 trigger (觸發器)

具體需要處理的業務邏輯。

jobdetail

詳細的任務描述,包括名稱,關聯的job,job執行時所需要的引數等。

trigger

任務排程器,描述什麼時候執行job,多久執行一次。

******trigger 設定重複次數,重複執行間隔時長

crontrigger 設定cron表示式

scheduler

排程容器,job與trigger都需要在容器中註冊,被容器統一管理。

cron表示式

*/5 * * * * ? 每隔5秒執行一次

0 */1 * * * ? 每隔1分鐘執行一次

0 0 23 * * ? 每天23點執行一次

0 0 23 ? * * 每天23點執行一次

0 0 23 * * ? * 每天23點執行一次

0 0 23 * * ? 2016 2023年每天23點執行一次

0 0 1 * * ? 每天1點執行一次

0 0 1 1 * ? 每月1號1點執行一次

0 * 14 * * ? 每天14:00點到14:59期間,每隔1分鐘執行一次

0 0-5 14 * * ? 每天14:00點到14:05期間,每隔1分鐘執行一次

0 0 23 l * ? 每月最後一天23點執行一次

0 0 1 ? * l 每週星期六1點執行一次

0 26,29,33 * * * ? 在26分、29分、33分執行一次

0 0 0,13,18,21 * * ? 每天的0點、13點、18點、21點都執行一次

0 0 0 ? * 6#3 每月第3個星期六

依賴

<

!--quartz依賴--

>

org.quartz-scheduler<

/groupid>

quartz<

/artifactid>

2.2.1

<

/version>

<

/dependency>

<

!--scheduler--

>

org.springframework<

/groupid>

spring-context-support<

/artifactid>

<

/dependency>

<

!--spring tx 座標--

>

org.springframework<

/groupid>

spring-tx<

/artifactid>

<

/dependency>

所需要的定時任務的service層放在job類中,quartz就會去執行該任務。

public

class

quartzjob implements job

}

@configuration

public

class

quartzconfig

/** * @description: 建立trigger物件

* @author: x

* @updatetime: 2019/12/9 19:49

*//*@bean

public ******trigge***ctorybean ******trigge***ctorybean(jobdetailfactorybean jobdetailfactorybean) */

/** * @description: 建立cron trigger

* @author: x

* @updatetime: 2019/12/9 19:48

*/@bean

public crontrigge***ctorybean crontrigge***ctorybean

(jobdetailfactorybean jobdetailfactorybean)

/** * @description: 建立scheduler物件

* @author: x

* @updatetime: 2019/12/9 19:48

*/@bean

public schedule***ctorybean schedule***ctorybean

(crontrigge***ctorybean crontrigge***ctorybean, myadaptablejobfactory myadaptablejobfactory)

}

factory.

setjobfactory

(myadaptablejobfactory)

;//重寫adaptablejobfactory後面會有介紹原因

執行程式此時需要注意會產生異常(空指標異常),原因是service層沒有注入進來

jobdetailfactorybean例項化job類(quartzjob.class)時沒有將該方法注入到spring容器中。所以重寫adaptablejobfactory方法將例項化的任務物件手動的新增到springioc容器中並完成物件注入。

@component

("myadaptablejobfactory"

)public

class

myadaptablejobfactory extends adaptablejobfactory

}

我的部落格還有你想知道的其他知識,歡迎瀏覽。∩__∩

Spring boot定時任務及整合Quartz

各種企業應用幾乎都會用到任務排程的需求,比如論壇每天凌晨統計使用者的 積分,每隔半個小時生成精華文章 spring boot中使用定時任務 spring boot中使用定時任務只要使用兩個註解 enablescheduling scheduled 在spring boot的啟動類上新增 enable...

springBoot整合dubbo整合專案

傳統spring 整合dubbo,需要繁瑣的編寫一堆堆的 xml 配置檔案 而springboot整合dubbo後,不在需要寫 xml,通過jar包引用,完 成整合,通過註解的形式完成配置。提高我們的開發效率 目錄結構 1 服務層生產者開發 hs ldm server service 1.1新增du...

SpringBoot整合系列 整合Swagger2

io.springfox springfox swagger2 2.7.0 io.springfox springfox swagger ui 2.7.0 一般無配置項,必要時可以新增自定義配置項,在配置類中讀取 swagger2的配置內容僅僅就是需要建立乙個docket例項 configurati...