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

同一Spring项目配置双PostgreSQL数据库时遇Bean创建错误

Spring多数据源配置报错:jdbcUrl is required with driverClassName

错误堆栈信息:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'comissionamentoEntityManagerFactory' defined in class path resource [coruripe/comissionamento/config/ComissionamentoConfig.class]: [PersistenceUnit: comissionamento] Unable to build Hibernate SessionFactory; nested exception is java.lang.IllegalArgumentException: jdbcUrl is required with driverClassName.

原本项目仅为「comissionamento」模块配置单个数据库,现在需要新增独立的「sis」模块并配置第二个PostgreSQL数据库。参考Spring官方文档及社区论坛完成配置后,仍出现上述错误。


application.properties配置

# Database configurations for Comissionamento
spring.datasource.comissionamento.url=jdbc:postgresql://localhost:5432/comissionamento
spring.datasource.comissionamento.username=***
spring.datasource.comissionamento.password=***
spring.datasource.comissionamento.driver-class-name=org.postgresql.Driver

# JPA/Hibernate configurations for Comissionamento
spring.jpa.comissionamento.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.comissionamento.hibernate.ddl-auto=update
spring.jpa.comissionamento.show-sql=true
spring.jpa.comissionamento.format-sql=true

# Database configurations for SIS
spring.datasource.sis.url=jdbc:postgresql://localhost:5432/sis
spring.datasource.sis.username=***
spring.datasource.sis.password=***
spring.datasource.sis.driver-class-name=org.postgresql.Driver

# JPA/Hibernate configurations for SIS
spring.jpa.sis.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.sis.hibernate.ddl-auto=update
spring.jpa.sis.show-sql=true
spring.jpa.sis.format-sql=true

ComissionamentoConfig类

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
        basePackages = "coruripe.comissionamento.repository",
        entityManagerFactoryRef = "comissionamentoEntityManagerFactory",
        transactionManagerRef = "comissionamentoTransactionManager"
)
public class ComissionamentoConfig {

    @Primary
    @Bean(name = "comissionamentoDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.comissionamento")
    public DataSource dataSource() {
        return DataSourceBuilder.create().build();
    }

    @Primary
    @Bean(name = "comissionamentoEntityManagerFactory")
    public LocalContainerEntityManagerFactoryBean entityManagerFactory(
            EntityManagerFactoryBuilder builder) {
        return builder
                .dataSource(dataSource())
                .packages("coruripe.comissionamento.model")
                .persistenceUnit("comissionamento")
                .properties(Map.of(
                        "hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect",
                        "hibernate.hbm2ddl.auto", "update",
                        "hibernate.show_sql", "true",
                        "hibernate.format_sql", "true"
                ))
                .build();
    }

    @Primary
    @Bean(name = "comissionamentoTransactionManager")
    public PlatformTransactionManager transactionManager(
            @Qualifier("comissionamentoEntityManagerFactory") EntityManagerFactory entityManagerFactory) {
        return new JpaTransactionManager(entityManagerFactory);
    }
}

SisConfig类

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
        basePackages = "coruripe.sis.repository",
        entityManagerFactoryRef = "sisEntityManagerFactory",
        transactionManagerRef = "sisTransactionManager"
)
public class SisConfig {

    @Bean(name = "sisDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.sis")
    public DataSource dataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "sisEntityManagerFactory")
    public LocalContainerEntityManagerFactoryBean entityManagerFactory(
            EntityManagerFactoryBuilder builder) {
        return builder
                .dataSource(dataSource())
                .packages("coruripe.sis.model")
                .persistenceUnit("sis")
                .properties(Map.of(
                        "hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect",
                        "hibernate.hbm2ddl.auto", "update",
                        "hibernate.show_sql", "true",
                        "hibernate.format_sql", "true"
                ))
                .build();
    }

    @Bean(name = "sisTransactionManager")
    public PlatformTransactionManager transactionManager(
            @Qualifier("sisEntityManagerFactory") EntityManagerFactory entityManagerFactory) {
        return new JpaTransactionManager(entityManagerFactory);
    }
}

我认为所有配置均正确,但仍出现上述错误。目前「sis」包下仅创建了目录,尚未添加实体类或控制器。

内容的提问来源于Stack Exchange,提问作者Mikael Luiz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 08:03:14