为什么在springboot应用程序中创建多个数据源时没有创建第二个数据库?

olqngx59  于 2021-07-14  发布在  Java
关注(0)|答案(1)|浏览(415)

我想在springboot应用程序中使用两个(mysql)数据库。按照说明,我使用以下配置
应用程序属性

spring.datasource.url = jdbc:mysql://localhost:3306/db1?createDatabaseIfNotExist=true&autoReconnect=true
spring.datasource.username = root
spring.datasource.password = password

spring.seconddatasource.url = jdbc:mysql://localhost:3306/db2?createDatabaseIfNotExist=true&autoReconnect=true
spring.seconddatasource.username = root
spring.seconddatasource.password = password

数据源配置.java

@Configuration
public class DataSourceConfig {
    @Bean("dataSource")
    @Primary
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource dataSource() {
        return DataSourceBuilder.create()
                .type(DriverManagerDataSource.class)
                .build();
    }

    @Bean("secondDataSource")
    @ConfigurationProperties(prefix = "spring.seconddatasource")
    public DataSource secondDataSource() {
        return DataSourceBuilder.create()
                .type(DriverManagerDataSource.class)
                .build();
       }
    }

应用程序启动时没有错误,但只创建第一个数据库(或标记为主数据库的数据源bean)。为什么不是第二个?
编辑:
一旦我手动创建了第二个数据库,应用程序就可以很好地连接到这两个数据库。只是非主数据库的自动创建导致了这些问题。

l3zydbqr

l3zydbqr1#

因为你在用 @ConfigurationProperties 错了。注解肯定不会将bean指向相关配置。创建第一个数据库是因为, spring.datasource.* 实际上是标准的Spring Boot属性。
如果希望创建两个数据源,至少需要设置适当的属性( url , password )第二个是你自己。您可以插入自定义属性( spring.seconddatasource.* )在配置类中使用 @Value ,当然。

相关问题