我认为您的问题在于您如何启动数据库 connectionFactory。根据您需要扩展和覆盖的文档​​AbstractR2dbcConfiguration#connectionFactory​

@Configuration
@EnableR2dbcRepositories
public class PostgresConfig extends AbstractR2dbcConfiguration {

@Override
@Bean
public ConnectionFactory connectionFactory() {
return new PostgresqlConnectionFactory(
PostgresqlConnectionConfiguration.builder()
.host("localhost")
.port(5432)
.username("postgres")
.password("mysecretpassword")
.database("myDatabase")
.build());
}
}
@Configuration
@EnableR2dbcRepositories
public class DatabaseConfiguration {

@Value("${spring.data.postgres.host}") private String host;
@Value("${spring.data.postgres.port}") private int port;
@Value("${spring.data.postgres.database}") private String database;
@Value("${spring.data.postgres.username}") private String username;
@Value("${spring.data.postgres.password}") private String password;

@Bean
public PostgresqlConnectionFactory connectionFactory() {
return new PostgresqlConnectionFactory(PostgresqlConnectionConfiguration.builder()
.host(host)
.port(port)
.database(database)
.username(username)
.password(password)
.build());
}
}

官方文档

这种方法允许您使用标准的 io.r2dbc.spi.ConnectionFactory 实例,容器使用 Spring 的 AbstractR2dbcConfiguration。

与直接注册 ConnectionFactory 实例相比,配置支持还有一个额外的优势,即还为容器提供了一个 ExceptionTranslator 实现,该实现将 R2DBC 异常转换为 Spring 的可移植 DataAccessException 层次结构中的异常,用于使用 @Repository 批注注释的数据访问类。

这个层次结构和@Repository 的使用在 Spring 的 DAO 支持特性中进行了描述。

AbstractR2dbcConfiguration 还注册了数据库交互和存储库实现所需的 DatabaseClient。

​R2DBC 官方文档​