You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Spring Boot/Cloud后Quartz报DataSource name not set错误求助

Spring Boot/Cloud升级后Quartz DataSource配置问题解决

核心问题分析

升级到Spring Boot 2.7.6 + Spring Cloud 3.1.5后,Quartz的自动配置逻辑发生了变化,旧版本的配置方式不再适配新版本的自动装配规则,导致数据源名称无法正确绑定。

分步解决方案

1. 标准化Quartz数据源配置

在application.yml中必须明确指定JobStore类型和数据源关联:

spring:
  quartz:
    job-store-type: jdbc # 强制使用JDBC存储
    properties:
      org:
        quartz:
          jobStore:
            dataSource: quartzDataSource # 指定要关联的数据源名称
            tablePrefix: QRTZ_ # 根据你的数据库表前缀调整

2. 正确定义@QuartzDataSource Bean

如果自定义Quartz专用数据源,Bean名称必须和上述配置中的dataSource值完全一致,示例代码:

import org.springframework.boot.autoconfigure.quartz.QuartzDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
import com.zaxxer.hikari.HikariDataSource;

@Configuration
public class QuartzDataSourceConfig {

    @Bean(name = "quartzDataSource") // 名称必须和配置里的quartzDataSource一致
    @QuartzDataSource
    public DataSource quartzDataSource() {
        HikariDataSource dataSource = new HikariDataSource();
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/your_db?useSSL=false&serverTimezone=UTC");
        dataSource.setUsername("db_user");
        dataSource.setPassword("db_pwd");
        dataSource.setMaximumPoolSize(10);
        return dataSource;
    }
}

如果使用项目默认的数据源,不需要自定义Bean,但必须确保默认DataSource能被Quartz自动识别。

3. 移除冗余配置

删除之前手动添加的org.quartz.jobStore.class配置,Spring Boot会根据job-store-type: jdbc自动加载JobStoreTX(或JobStoreCMT)实现,手动指定会覆盖自动配置逻辑,导致数据源绑定失败。

4. 检查依赖一致性

确保pom.xml(或build.gradle)中只保留spring-boot-starter-quartz,移除独立的quartz依赖,避免版本冲突:

<!-- 正确依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-quartz</artifactId>
</dependency>

5. 验证配置生效

启动项目前,清理缓存并重新构建,确保配置文件被正确加载。如果仍有问题,开启debug日志查看Quartz配置加载过程:

logging:
  level:
    org.springframework.boot.autoconfigure.quartz: debug
    org.quartz: debug

通过日志确认数据源名称是否被正确注入到Quartz的JobStore中。

内容的提问来源于stack exchange,提问作者gstackoverflow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 03:10:36