【问题标题】:MultiDb Configuration with Spring r2dbc always uses only one Database使用 Spring r2dbc 的 MultiDb 配置始终只使用一个数据库
【发布时间】:2020-05-02 05:33:30
【问题描述】:

我有一个简单的多数据库设置来尝试使用 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 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>{


}

以上是我的代码的简单表示。 我的请求总是发送到 Postgresql,尽管 basepackage 配置为 mssql 包 com.x.y.repo.mssql

【问题讨论】:

  • 我认为这不值得作为答案,但这是一个可怕的错误。 basePackages 值存在拼写错误。我假设如果提供了不存在的包,将引发警告或错误。但是,没有错误。由于这是一个多数据库配置,它已将所有存储库静默分配给默认存储库。必须启用调试日志并识别此零存储库找到消息。

标签: java spring-data spring-data-r2dbc


【解决方案1】:

不确定你使用的是哪个版本,我在使用最新的spring boot 2.4.0-M2/Spring Data R2dbc 1.2.0-M2时也遇到了同样的问题。

在这里使用AbstractR2dbcConfiguration 有问题,请检查this quesiton。我在单个应用程序中使用 MySQL 和 Postgres。

我终于通过创建自定义配置并放弃AbstractR2dbcConfiguration 解决了这个问题,检查the sample codes

【讨论】:

    猜你喜欢
    • 2021-01-08
    • 2017-10-26
    • 2021-12-29
    • 2021-03-07
    • 2021-08-16
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 2011-05-01
    相关资源
    最近更新 更多