javascript
SpringBoot2.0新特性 - Quartz自动化配置集成
https://www.jianshu.com/p/056281e057b3
在新版本的SpringBoot2.0發布后,急迫嘗鮮的我將相關的項目已經更換為最新版本,在SpringBoot源碼GitHub看到更新日志,表明了針對Quartz新版本進行了 AutoConfiguration自動化配置,省去了很多繁瑣的配置。
官網更新日志
Auto-configuration support is now include for the Quartz Scheduler. We’ve also added a new spring-boot-starter-quartz starter POM.
You can use in-memory JobStores, or a full JDBC-based store. All JobDetail, Calendar and Trigger beans from your Spring application context will be automatically registered with the Scheduler.
For more details read the new "Quartz Scheduler" section of the reference documentation.
SpringBoot2.0版本集成了Quartz2.3.0官網最新版本。
本章目標
使用SpringBoot2.0新特性完成Quartz自動化配置。
SpringBoot 企業級核心技術學習專題
| 001 | Spring Boot 核心技術 | 講解SpringBoot一些企業級層面的核心組件 |
| 002 | Spring Boot 核心技術章節源碼 | Spring Boot 核心技術簡書每一篇文章碼云對應源碼 |
| 003 | Spring Cloud 核心技術 | 對Spring Cloud核心技術全面講解 |
| 004 | Spring Cloud 核心技術章節源碼 | Spring Cloud 核心技術簡書每一篇文章對應源碼 |
| 005 | QueryDSL 核心技術 | 全面講解QueryDSL核心技術以及基于SpringBoot整合SpringDataJPA |
| 006 | SpringDataJPA 核心技術 | 全面講解SpringDataJPA核心技術 |
| 007 | SpringBoot核心技術學習目錄 | SpringBoot系統的學習目錄,敬請關注點贊!!! |
構建項目
在前面章節第四十章:基于SpringBoot & Quartz完成定時任務分布式多節點負載持久化內我們已經通過添加配置的方式完成集成,為了本章的方便直接復制之前的項目,在基礎上進行修改。
打開pom.xml配置文件,SpringBoot為我們提供了對應的依賴,我們將之前的quartz相關依賴刪除,替換為spring-boot-starter-quartz,如下所示:
刪除QuartzConfiguration配置類
在之前章節我們使用QuartzConfiguration配置類來完成了Quartz需要的一系列配置,如:JobFactory、SchedulerFactoryBean等,在我們添加spring-boot-starter-quartz依賴后就不需要主動聲明工廠類,因為spring-boot-starter-quartz已經為我們自動化配置好了。
自動化配置源碼
我們找到Idea的External Libraries并且展開spring-boot-autoconfigure-2.0.0.RELEASE.jar,找到org.springframework.boot.autoconfigure.quartz,該目錄就是SpringBoot為我們提供的Quartz自動化配置源碼實現,在該目錄下有如下所示幾個類:
- AutowireCapableBeanJobFactory
該類替代了我們之前在QuartzConfiguration配置類的AutowiringSpringBeanJobFactory內部類實現,主要作用是我們自定義的QuartzJobBean子類被Spring IOC進行托管,可以在定時任務類內使用注入任意被Spring IOC托管的類。 - JobStoreType
該類是一個枚舉類型,定義了對應application.yml、application.properties文件內spring.quartz.job-store-type配置,其目的是配置quartz任務的數據存儲方式,分別為:MEMORY(內存方式:默認)、JDBC(數據庫方式)。 - QuartzAutoConfiguration
該類是自動配置的主類,內部配置了SchedulerFactoryBean以及JdbcStoreTypeConfiguration,使用QuartzProperties作為屬性自動化配置條件。 - QuartzDataSourceInitializer
該類主要用于數據源初始化后的一些操作,根據不同平臺類型的數據庫進行選擇不同的數據庫腳本。 - QuartzProperties
該類對應了spring.quartz在application.yml、application.properties文件內開頭的相關配置。 - SchedulerFactoryBeanCustomizer
這是一個接口,我們實現該接口后并且將實現類使用Spring IOC托管,可以完成SchedulerFactoryBean的個性化設置,這里的設置完全可以對SchedulerFactoryBean做出全部的設置變更。
spring.quartz配置
看到QuartzAutoConfiguration類源碼,我們知道了,想要使用自動化配置,需要滿足QuartzProperties屬性配置類的初始化,所以我們需要再application.yml、application.properties配置文件內添加對應的配置信息,如下所示:
spring:quartz:#相關屬性配置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: 10 threadPriority: 5 threadsInheritContextClassLoaderOfInitializingThread: true #數據庫方式 job-store-type: jdbc #初始化表結構 #jdbc: #initialize-schema: never- spring.quartz.properties
該配置其實代替了之前的quartz.properties,我們把之前quartz.properties配置文件內的所有配置轉換成YUML風格,對應的添加在該配置下即可,在QuartzAutoConfiguration類內,會自動調用SchedulerFactoryBean的setQuartzProperties方法,把spring.quartz.properties內的所有配置進行設置。
- spring.quartz.job-store-type
設置quartz任務的數據持久化方式,默認是內存方式,我們這里沿用之前的方式,配置JDBC以使用數據庫方式持久化任務。 - spring.quartz.jdbc.initialize-schema
該配置目前版本沒有生效,根據官網文檔查看,其目的是自動將quartz需要的數據表通過配置方式進行初始化。
測試
根據控制臺內容,可以看到我們的定時任務已經正常的開始執行,當然我們如果打開多個節點同樣可以實現任務自動漂移的效果。
總結
綜上所述我們已經完成了SpringBoot2.0集成Quartz,我們只需要添加依賴、添加配置即可,別的不需要做任何代碼編寫。
作者:恒宇少年
鏈接:https://www.jianshu.com/p/056281e057b3
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權并注明出處。
轉載于:https://www.cnblogs.com/davidwang456/articles/10316054.html
總結
以上是生活随笔為你收集整理的SpringBoot2.0新特性 - Quartz自动化配置集成的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 滴滴自研分布式 NoSQL 数据库 Fu
- 下一篇: gradle idea java ssm