首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R2dbcDataAutoConfiguration与AbstractR2dbcConfiguration在bean 'r2dbcDatabaseClient‘bean创建上的冲突

R2dbcDataAutoConfiguration与AbstractR2dbcConfiguration在bean 'r2dbcDatabaseClient‘bean创建上的冲突
EN

Stack Overflow用户
提问于 2020-07-23 09:05:17
回答 2查看 2.3K关注 0票数 1

需要帮助

代码语言:javascript
复制
@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,并且禁用了覆盖。

我在用

代码语言:javascript
复制
       <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>
EN

回答 2

Stack Overflow用户

发布于 2020-07-23 09:55:52

您错过了用connectionFactory Bean.对方法进行注释的查看文档这里

代码语言:javascript
复制
    @Bean
    @Override
    public ConnectionFactory connectionFactory() {
        return new MssqlConnectionFactory(
            MssqlConnectionConfiguration.builder()
                .host(host)
                .port(port)
                .database(database)
                .username(username)
                .password(password).build());
    }

如果问题仍然存在,以防在任何配置类中定义了任何覆盖bean,那么您应该使用以下属性:

代码语言:javascript
复制
spring.main.allow-bean-definition-overriding=true

从Spring5.1开始,引入了BeanDefinitionOverrideException,允许开发人员自动抛出异常以防止任何意外的bean覆盖。

票数 0
EN

Stack Overflow用户

发布于 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

代码语言:javascript
复制
spring:
  r2dbc:
    url: r2dbc:mssql://xx.xxx.xxx.xxx:6515/*****
    username: xxxx_xxxx
    password: xxxxx

第二个适合我的解决方案是使用下面的代码排除R2dbcDataAutoConfiguration

代码语言:javascript
复制
@SpringBootApplication(exclude = { R2dbcDataAutoConfiguration.class,
 R2dbcAutoConfiguration.class })
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63050683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档