我想在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)。为什么不是第二个?
编辑:
一旦我手动创建了第二个数据库,应用程序就可以很好地连接到这两个数据库。只是非主数据库的自动创建导致了这些问题。
1条答案
按热度按时间l3zydbqr1#
因为你在用
@ConfigurationProperties
错了。注解肯定不会将bean指向相关配置。创建第一个数据库是因为,spring.datasource.*
实际上是标准的Spring Boot属性。如果希望创建两个数据源,至少需要设置适当的属性(
url
,password
)第二个是你自己。您可以插入自定义属性(spring.seconddatasource.*
)在配置类中使用@Value
,当然。