英文:
MultiDb Configuration with Spring r2dbc always uses only one Database
问题
我有一个简单的多数据库设置,用于尝试使用r2dbc进行多数据库配置。
然而,它没有按预期工作,它总是使用第一个数据库。
@Configuration
@EnableR2dbcRepositories(databaseClientRef="postgreDbClient", basePackages={"com.x.y.repo.postgresql"})
public class PostgreSqlConfiguration extends AbstractR2dbcConfiguration{
@Bean(name="postgresqlConnectionFactory")
ConnectionFactory connectionFactory(){
return ConnectionFactories.get("r2dbc:postgresql://<host>:5432/<database>");
}
@Bean(name="postgreDbClient")
DatabaseClient databaseClient(){
return DatabaseClient.create(this.connectionFactory());
}
}
@Configuration
@EnableR2dbcRepositories(databaseClientRef="mssqlDbClient", basePackages={"com.x.y.repo.mssql"})
public class MsSqlConfiguration extends AbstractR2dbcConfiguration{
@Bean(name="mssqlConnectionFactory")
ConnectionFactory connectionFactory(){
return ConnectionFactories.get("r2dbc:mssql://<host>:1433/<database>");
}
@Bean(name="mssqlDbClient")
DatabaseClient databaseClient(){
return DatabaseClient.create(this.connectionFactory());
}
}
com.x.y.repo.postgresql
-EmployeeRepository.java
-DepartmentRepository.java
com.x.y.repo.mssql
-PuchaseRepository.java
-SalesRepository.java
public interface EmployeeRepository extends R2dbcRepository<Employee, Integer>{
}
public interface PuchaseRepository extends R2dbcRepository<Purchase, Integer>{
}
以上是我代码的简单表示。
尽管已经为mssql包"com.x.y.repo.mssql"配置了basepackage,但我的请求总是发送到Postgresql。
英文:
I have a simple Multi Database setup to try out Multi Database configuration with r2dbc.
However, it is not working as expected, it always uses the first Database.
@Configuration
@EnableR2dbcRepositories(databaseClientRef="postgreDbClient". basePackages={"com.x.y.repo.postgresql"})
public class PostgreSqlConfiguration extends AbstractR2dbcConfiguration{
@Bean(name="postgresqlConnectionFactory")
ConnectionFactory connectionFactory(){
return ConnectionFactories.get("r2dbc:postgresql://<host>:5432/<database>");
}
@Bean(name="postgreDbClient")
DatabaseClient databaseClient(){
return DatabaseClient.create(this.connectionFactory());
}
}
@Configuration
@EnableR2dbcRepositories(databaseClientRef="mssqlDbClient". basePackages={"com.x.y.repo.mssql"})
public class PostgreSqlConfiguration extends AbstractR2dbcConfiguration{
@Bean(name="mssqlConnectionFactory")
ConnectionFactory connectionFactory(){
return ConnectionFactories.get("r2dbc:mssql://<host>:1433/<database>");
}
@Bean(name="mssqlDbClient")
DatabaseClient databaseClient(){
return DatabaseClient.create(this.connectionFactory());
}
}
com.x.y.repo.postgresql
-EmployeeRepository.java
-DepartmentRepository.java
com.x.y.repo.mssql
-PuchaseRepository.java
-SalesRepository.java
public interface EmployeeRepository extends R2dbcRepository<Employee, Integer>{
}
public interface PuchaseRepository extends R2dbcRepository<Purchase, Integer>{
}
The above is the simple representation of my code.
My requests go to Postgresql always, though basepackage is configured for mssql package com.x.y.repo.mssql
答案1
得分: 0
不确定您使用的是哪个版本,我在使用最新的Spring Boot 2.4.0-M2/Spring Data R2dbc 1.2.0-M2时也遇到了相同的问题。
在这里使用AbstractR2dbcConfiguration
存在问题,请参考此问题。我在同一个应用程序中同时使用了MySQL和Postgres。
我最终通过创建自定义配置并放弃AbstractR2dbcConfiguration
来解决了这个问题,参考示例代码。
英文:
Not sure which version you are using, I also encountered the same issue when using the latest spring boot 2.4.0-M2/Spring Data R2dbc 1.2.0-M2.
Using AbstractR2dbcConfiguration
is problematic here, check this quesiton. I was using MySQL and Postgres in the single application.
I finally resolved it by creating custom config and giving up AbstractR2dbcConfiguration
, check the sample codes.
专注分享java语言的经验与见解,让所有开发者获益!
评论