需要帮助
@Configuration
@EnableR2dbcRepositories(basePackages = "com.paymentservice.repository", databaseClientRef = "databaseClient")
public class PaymentR2dbcConfiguration extends AbstractR2dbcConfiguration {
@Value("${payment.data.mssql.host}")
private String host;
@Value("${payment.data.mssql.port}")
private int port;
@Value("${payment.data.mssql.database}")
private String database;
@Value("${payment.data.mssql.username}")
private String username;
@Value("${payment.data.mssql.password}")
private String password;
/**
* An implementation of {@link ConnectionFactory} for creating connections to
* a Microsoft SQL Server database using R2DBC.
*
* @return A factory for creating {@link Connection}s.
*/
@Override
public ConnectionFactory connectionFactory() {
return new MssqlConnectionFactory(
MssqlConnectionConfiguration.builder()
.host(host)
.port(port)
.database(database)
.username(username)
.password(password).build());
}
}我得到了
引用类路径资源org/springframework/boot/autoconfigure/data/r2dbc/R2dbcDataAutoConfiguration.class,中定义的bean‘r2dbcaseDatabaseClient’无法注册。已经在类路径资源com/paymentservice/configurations/PaymentR2dbcConfiguration.class中定义了具有该名称的bean,并且禁用了覆盖。
我在用
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-r2dbc</artifactId>
<version>1.1.1.RELEASE</version>
</dependency>
<dependency>
<groupId>io.r2dbc</groupId>
<artifactId>r2dbc-mssql</artifactId>
<version>0.8.4.RELEASE</version>
</dependency>发布于 2020-07-23 09:55:52
您错过了用connectionFactory Bean.对方法进行注释的查看文档这里
@Bean
@Override
public ConnectionFactory connectionFactory() {
return new MssqlConnectionFactory(
MssqlConnectionConfiguration.builder()
.host(host)
.port(port)
.database(database)
.username(username)
.password(password).build());
}如果问题仍然存在,以防在任何配置类中定义了任何覆盖bean,那么您应该使用以下属性:
spring.main.allow-bean-definition-overriding=true从Spring5.1开始,引入了BeanDefinitionOverrideException,允许开发人员自动抛出异常以防止任何意外的bean覆盖。
发布于 2020-07-23 12:56:11
这是spring和spring r2dbc中的一个未决问题,请参阅post:
https://github.com/spring-projects/spring-data-r2dbc/issues/296
和https://github.com/spring-projects/spring-boot/issues/21586
适合我的解决方案是使用默认的R2dbcDataAutoConfiguration并删除自定义配置AbstractR2dbcConfiguration,直到Spring修复它。
下面的属性用于初始化R2dbcDataAutoConfiguration
spring:
r2dbc:
url: r2dbc:mssql://xx.xxx.xxx.xxx:6515/*****
username: xxxx_xxxx
password: xxxxx第二个适合我的解决方案是使用下面的代码排除R2dbcDataAutoConfiguration。
@SpringBootApplication(exclude = { R2dbcDataAutoConfiguration.class,
R2dbcAutoConfiguration.class })https://stackoverflow.com/questions/63050683
复制相似问题