spring-boot-starter-quartz升级到2.5.7后,报错There is no DataSource named 'null'

3,055 阅读1分钟

问题原因

项目配置中包含了如下配置:

spring.datasource.xx=xxx
spring.quartz.properties.org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX

之前版本:当配置dataSource后,即使配置文件中已经指定了JobStoreTX,实际还是使用LocalDataSourceJobStore。LocalDataSourceJobStore使用已经配置的dataSource作为数据源。
升级后的版本:配置文件中指定org.quartz.jobStore.class后,会使用指定的JobStore。该JobStore对应的dataSource需要专门配置。

修改方案

方案一

使用LocalDataSourceJobStore

spring.datasource.xx=xxx
spring.quartz.properties.org.quartz.jobStore.class=org.springframework.scheduling.quartz.LocalDataSourceJobStore

方案二

使用JobStoreTX,同时指定quartz的数据源。

spring.quartz.properties.org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
spring.quartz.properties.org.quartz.jobStore.dataSource=myDS
spring.quartz.properties.org.quartz.dataSource.myDS.driver=org.h2.Driver
spring.quartz.properties.org.quartz.dataSource.myDS.URL=jdbc:h2:mem:testdb
spring.quartz.properties.org.quartz.dataSource.myDS.user=sa
spring.quartz.properties.org.quartz.dataSource.myDS.password=
spring.quartz.properties.org.quartz.dataSource.myDS.maxConnections=5
spring.quartz.properties.org.quartz.dataSource.myDS.provider=hikaricp

参考

  1. github.com/spring-proj…
  2. github.com/ChamithKodi…