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

Spring Boot应用未使用JPA时如何正确配置双JDBC数据源

问题根因

PostgreSQL数据源的配置类未正确绑定专属配置前缀,Spring读取了带@Primary注解的H2数据源的配置注入到PG数据源中,导致驱动类异常。

修复步骤
  • 第一步:确保application.properties中两个数据源的配置前缀完全独立,不要共用spring.datasource前缀,示例配置如下:
# H2主数据源配置
spring.datasource.h2.jdbc-url=jdbc:h2:mem:testdb
spring.datasource.h2.username=sa
spring.datasource.h2.password=
spring.datasource.h2.driver-class-name=org.h2.Driver

# PostgreSQL数据源配置
spring.datasource.pg.jdbc-url=jdbc:postgresql://localhost:5432/your_db
spring.datasource.pg.username=postgres
spring.datasource.pg.password=your_pg_pass
spring.datasource.pg.driver-class-name=org.postgresql.Driver

注意自定义数据源绑定需要使用jdbc-url属性,不能用url,否则配置无法被正确识别。

  • 第二步:修正H2数据源配置类,绑定对应前缀,@Primary注解保留:
@Configuration
public class H2DataSourceConfig {
    @Bean
    @Primary
    @ConfigurationProperties(prefix = "spring.datasource.h2")
    public DataSource dataSourceH2() {
        return DataSourceBuilder.create().build();
    }
}
  • 第三步:修正PostgreSQL数据源配置类,绑定PG专属前缀:
@Configuration
public class PgDataSourceConfig {
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.pg")
    public DataSource dataSourcePg() {
        return DataSourceBuilder.create().build();
    }
}

如果担心配置绑定失效,也可以手动显式指定PG数据源的所有参数:

@Bean
public DataSource dataSourcePg() {
    return DataSourceBuilder.create()
            .driverClassName("org.postgresql.Driver")
            .url("jdbc:postgresql://localhost:5432/your_db")
            .username("postgres")
            .password("your_pg_pass")
            .build();
}
  • 可选排查:如果修改后仍存在问题,可在启动类排除Spring Boot自带的数据源自动配置,避免默认配置干扰:
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class YourApplication {
    public static void main(String[] args) {
        SpringApplication.run(YourApplication.class, args);
    }
}
验证

启动项目后注入dataSourcePg实例,调用getDriverClassName()方法,返回值为org.postgresql.Driver即为配置成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:06:00