SpringBoot自动配置Quartz的实现步骤
SpringBoot2.0版本之后,其中增加了对Quartz框架的支持内容,可以实现通过容器来自动配置Quartz。
1. 依赖信息
springboot2.x版本时,出现了spring-boot-starter-quartz这一起步依赖,其中提供了很多丰富功能。
1.1 原依赖信息
之前引入quartz框架时,必须引入的依赖信息有:
<!--quartz核心包--> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.2</version> </dependency> <!--添加Scheduled坐标--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> </dependency> <!--Spring tx 坐标--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> </dependency>
依赖引入之后,项目的maven中的依赖管理信息
1.2 新的依赖
使用新的spring-boot-starter-quartz依赖代替原有三种依赖信息:
<!--springboot2-quartz依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency>
依赖引入后,项目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项目的数据源配置
- JobStoreType,定义quartz数据存储类型的枚举类,有MEMORY/JDBC两个值
- SchedulerFactoryBeanCustomizer,功能接口,可以通过实现该接口来实现调度器类的自定义配置
使用自动配置类流程
- 使用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的自动配置带来了很大的效率,减去了很多重复的配置、也增加了代码的简洁性。
但是,自动配置往往也会带来一些问题,如自动配置冲突等情况,往往需要手动来选择最终使用的配置对象。
到此这篇关于SpringBoot自动配置Quartz的实现步骤的文章就介绍到这了,更多相关SpringBoot自动配置Quartz内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
使用Spring的拦截器监测每个Controller或方法的执行时长
这篇文章主要介绍了使用Spring的拦截器监测每个Controller或方法的执行时长,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-10-10Java POI导出Excel时合并单元格没有边框的问题解决
这篇文章主要给大家介绍了关于Java POI导出Excel时合并单元格没有边框的问题解决办法,文中通过代码介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友可以参考下2023-07-07springboot集成PageHelper分页失效的原因及解决
项目启动初期,在集成mybatis的分页插件,自定义封装了一个分页的工具类,方便后期项目的扩展,结果无法分页了,怎么设置搞都没办法正常分页,所以本文将给大家介绍一下springboot集成PageHelper分页失效的原因及解决,需要的朋友可以参考下2023-10-10springboot实现SSE(Server Sent Event)的示例代码
SSE 全称Server Sent Event,直译一下就是服务器发送事件,本文主要为大家详细介绍了springboot实现SSE的相关知识,需要的可以参考一下2024-04-04
最新评论