溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

SpringBoot自動(dòng)配置Quartz的實(shí)現(xiàn)步驟是什么

發(fā)布時(shí)間:2021-11-01 11:46:57 來源:億速云 閱讀:202 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“SpringBoot自動(dòng)配置Quartz的實(shí)現(xiàn)步驟是什么”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

1. 依賴信息

springboot2.x版本時(shí),出現(xiàn)了spring-boot-starter-quartz這一起步依賴,其中提供了很多豐富功能。

1.1 原依賴信息

之前引入quartz框架時(shí),必須引入的依賴信息有:

<!--quartz核心包-->
<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>2.3.2</version>
</dependency>
<!--添加Scheduled坐標(biāo)-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
</dependency>
<!--Spring tx 坐標(biāo)-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
</dependency>

依賴引入之后,項(xiàng)目的maven中的依賴管理信息

SpringBoot自動(dòng)配置Quartz的實(shí)現(xiàn)步驟是什么

1.2 新的依賴

使用新的spring-boot-starter-quartz依賴代替原有三種依賴信息:

<!--springboot2-quartz依賴-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-quartz</artifactId>
</dependency>

依賴引入后,項(xiàng)目maven管理的依賴信息

1.3 依賴變化

可以看出,springBoot2.0之后使用一個(gè)starter依賴就相當(dāng)于引入三個(gè)依賴信息,spring-boot-starter-quartz本質(zhì)上與引入三個(gè)依賴信息相同。

2. 新的依賴使用

2.1 默認(rèn)配置可用

使用新的依賴信息后,對(duì)于原有的配置方式是完全可行的,如原有的quartz使用流程:

  • 定義任務(wù)實(shí)現(xiàn)Job,并重寫其中的execute()方法,添加執(zhí)行的任務(wù)

  • 配置Quartz配置類,配置類中注入Job、Trigger、Scheduler對(duì)象

  • 配置類或者啟動(dòng)類上使用@EnableScheduling注解開啟定時(shí)任務(wù)

  • 項(xiàng)目啟動(dòng)時(shí)會(huì)自動(dòng)執(zhí)行配置的定時(shí)任務(wù)

在新的依賴支持下項(xiàng)目執(zhí)行效果完全一致。

2.2 使用自動(dòng)配置

如果說springboot2.0之后的starter依賴帶來的變化,最主要的就是依賴包中封裝了quartz的自動(dòng)配置相關(guān)內(nèi)容。

quartz相關(guān)的自動(dòng)配置類是springboot的autoconfigure自動(dòng)配置類包中提供的支持,如下

SpringBoot自動(dòng)配置Quartz的實(shí)現(xiàn)步驟是什么

  • QuartzAutoConfiguration,自動(dòng)配置類,其中會(huì)自動(dòng)初始化配置調(diào)度器類、數(shù)據(jù)源信息、和數(shù)據(jù)存儲(chǔ)類型等

  • QuartzProperties,配置文件類,對(duì)于quartz的配置信息,使用統(tǒng)一的application.yml/properties管理,jar包中提供了一個(gè)QuartzProperties類專門用來獲取配置文件中quartz相關(guān)的配置信息。

    • 該類存在org.springframework.boot.autoconfigure.quartz springboot自動(dòng)配置包中,獲取配置文件中以"spring.quartz"開頭的配置

  • QuartzDataSourceInitializer,初始化數(shù)據(jù)源操作,直接使用spingboot項(xiàng)目的數(shù)據(jù)源配置

  • JobStoreType,定義quartz數(shù)據(jù)存儲(chǔ)類型的枚舉類,有MEMORY/JDBC兩個(gè)值

  • SchedulerFactoryBeanCustomizer,功能接口,可以通過實(shí)現(xiàn)該接口來實(shí)現(xiàn)調(diào)度器類的自定義配置

使用自動(dòng)配置類流程

  • 使用starter依賴信息

  • 使用 application.yml/properties 統(tǒng)一管理quartz配置

  • 移除使用@Configuration標(biāo)注的自動(dòng)配置類,否則該配置類會(huì)代替自動(dòng)配置

2.3 配置信息:

在application.yml文件中配置數(shù)據(jù)持久化:

server:
  port: 8082

spring:
  datasource:
    url: jdbc:mysql://10.35.219.24:3306/test282?autoReconnect=true&useUnicode=true&characterEncoding=utf-8
    username: mysql
    password: Dh3236@db!
    driver-class-name: com.mysql.cj.jdbc.Driver
  quartz:
    #相關(guān)屬性配置
    properties:
      org:
        quartz:
          scheduler:
            instanceName: clusteredScheduler
            instanceId: AUTO
          jobStore:
            class: org.quartz.impl.jdbcjobstore.JobStoreTX
            driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
            tablePrefix: QRTZ_
            isClustered: true
            clusterCheckinInterval: 10000
            useProperties: false
          threadPool:
            class: org.quartz.simpl.SimpleThreadPool
            threadCount: 15
            threadPriority: 5
            threadsInheritContextClassLoaderOfInitializingThread: true
    #數(shù)據(jù)庫(kù)方式
    job-store-type: jdbc

數(shù)據(jù)庫(kù)存儲(chǔ)方式字段job-store-typ可以取值為jdbc或memory,如果需要設(shè)置為memory存儲(chǔ)在內(nèi)存中時(shí),需要?jiǎng)t需要更改jobStore.class為內(nèi)存類型,并移除jonStore下的其他配置信息;否則會(huì)啟動(dòng)報(bào)錯(cuò)。

“SpringBoot自動(dòng)配置Quartz的實(shí)現(xiàn)步驟是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI