SpringBoot自动配置Quartz的实现步骤

网友投稿 341 2022-11-26

SpringBoot自动配置Quartz的实现步骤

目录1. 依赖信息1.1 原依赖信息1.2 新的依赖1.3 依赖变化2. 新的依赖使用2.1 默认配置可用2.2 使用自动配置2.3 配置信息:3. 总结

SpringBoot2.0版本之后,其中增加了对Quartz框架的支持内容,可以实现通过容器来自动配置Quartz。

1. 依赖信息

springboot2.x版本时,出现了spring-boot-starter-quartz这一起步依赖,其中提供了很多丰富功能。

1.1 原依赖信息

之前引入quartz框架时,必须引入的依赖信息有:

org.quartz-scheduler

quartz

2.3.2

&MZgKxjlt;dependency>

org.springframework

spring-context-support

org.springframework

spring-tx

依赖引入之后,项目的maven中的依赖管理信息

1.2 新的依赖

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

org.springframework.boot

spring-boot-starter-quartz

依赖引入后,项目maven管理的依赖信息

1.3 依赖变化

可以看出,springBoot2.0之后使用一个starter依赖就相当于引入三个依赖信息,spring-boot-starter-quartz本质上与引入三个依赖信息相同。

2. 新的依赖使用

2.1 默认配置可用

使用新的依赖信息后,对于原有的配置方式是完全可行的,如原有的quartz使用流程:

定义任务实现Job,并重写其中的execute()方法,添加执行的任务

配置Quartz配置类,配置类中注入Job、Trigger、Scheduler对象

配置类或者启动类上使用@EnableScheduling注解开启定时任务

项目启动时会自动执行配置的定时任务

在新的依赖支持下项目执行效果完全一致。

2.2 使用自动配置

如果说springboot2.0之后的starter依赖带来的变化,最主要的就是依赖包中封装了quartz的自动配置相关内容。

quartz相关的自动配置类是springboot的autoconfigure自动配置类包中提供的支持,如下

QuartzAutoConfiguration,自动配置类,其中会自动初始化配置调度器类、数据源信息、和数据存储类型等

QuartzProperties,配置文件类,对于quartz的配置信息,使用统一的application.yml/properties管理,jar包中提供了一个QuartzProperties类专门用来获取配置文件中quartz相关的配置信息。

该类存在org.springframework.boot.autoconfigure.quartz springboot自动配置包中,获取配置文件中以"spring.quartz"开头的配置

QuartzDataSourceInitializer,初始化数据源操作,直接使用spingboot项目的数据源配置

JobMZgKxjStoreType,定义quartz数据存储类型的枚举类,有MEMORY/JDBC两个值

SchedulerFactoryBeahttp://nCustomizer,功能接口,可以通过实现该接口来实现调度器类的自定义配置

使用自动配置类流程

使用starter依赖信息

使用 application.yml/properties 统一管理quartz配置

移除使用@Configuration标注的自动配置类,否则该配置类会代替自动配置

2.3 配置信息:

在application.yml文件中配置数据持久化:

server:

port: 8082

spring:

datasource:

url: jdbc:mysql://10.35.219.24:3306/test282?autoReconnect=true&useUnicode=true&characterEncoding=utf-8

username: mysql

password: Dh2236@db!

driver-class-name: com.mysql.cj.jdbc.Driver

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: 15

threadPriority: 5

threadsInheritContextClassLoaderOfInitializingThread: true

#数据库方式

job-store-type: jdbc

数据库存储方式字段job-store-typ可以取值为jdbc或memory,如果需要设置为memory存储在内存中时,需要则需要更改jobStore.class为内存类型,并移除jonStore下的其他配置信息;否则会启动报错。

3. 总结

SpringBoot的自动配置带来了很大的效率,减去了很多重复的配置、也增加了代码的简洁性。

但是,自动配置往往也会带来一些问题,如自动配置冲突等情况,往往需要手动来选择最终使用的配置对象。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:小芯片(Chiplet)互联解决方案
下一篇:Hadoop HA
相关文章

 发表评论

暂时没有评论,来抢沙发吧~