【问题标题】:Executing spring web client causing DeferringLoadBalancerExchangeFilterFunction non qualifying bean exception执行 Spring Web 客户端导致 DeferringLoadBalancerExchangeFilterFunction 非限定 bean 异常
【发布时间】:2021-04-29 06:00:06
【问题描述】:

我已经使用 Spring WebFlux 创建了 Spring Boot 项目。想法是学习 Spring WebClient 和相关的东西。在应用程序开始时,我得到以下错误

Error creating bean with name 'loadBalancerWebClientBuilderBeanPostProcessor' defined in class path resource [org/springframework/cloud/client/loadbalancer/reactive/LoadBalancerBeanPostProcessorAutoConfiguration.class]: 
Unsatisfied dependency expressed through method 'loadBalancerWebClientBuilderBeanPostProcessor' parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: 
No qualifying bean of type 'org.springframework.cloud.client.loadbalancer.reactive.DeferringLoadBalancerExchangeFilterFunction<?>' available: expected at least 1 bean which qualifies as autowire candidate. 
Dependency annotations: {}
 

我的 maven 依赖项中有 spring-cloud-dependencies/spring-boot-starter*/spring-cloud-context 之类的依赖项。仅提供 DeferrringLoadBalancerExchangeFilterFunction 不可用的信息时出错,我尝试在我的配置类中使用 @Bean 注入它。但错误仍然存​​在。请指教

在 pom.xml 中发布依赖项

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Hoxton.SR9</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

 <dependencies>

  <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-oauth2-client</artifactId>
    </dependency>
    
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-kubernetes-config</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-kubernetes-all</artifactId>
    </dependency>
  

    <!-- 3rd Party Dependencies -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <scope>provided</scope>
    </dependency>
  
    <dependency>
        <groupId>org.mapstruct</groupId>
        <artifactId>mapstruct</artifactId>
        <version>${org.mapstruct.version}</version>
    </dependency>
    <dependency>
        <groupId>org.mapstruct</groupId>
        <artifactId>mapstruct-processor</artifactId>
        <version>${org.mapstruct.version}</version>
    </dependency>

    <dependency>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>azure-keyvault-secrets-spring-boot-starter</artifactId>
        <version>2.3.1</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-context</artifactId>
        <version>2.2.5.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-aop</artifactId>
    </dependency>

    <!--Dependency for registering your app as a Spring Boot Admin Client-->
    <dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-starter-client</artifactId>
        <version>2.2.2</version>
    </dependency>

    <dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-dependencies</artifactId>
        <version>2.2.2</version>
        <type>pom</type>
    </dependency>
    <dependency>
        <groupId>org.jolokia</groupId>
        <artifactId>jolokia-core</artifactId>
    </dependency>    

    <!--spring dependencies-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-feign</artifactId>
        <version>1.4.7.RELEASE</version>
    </dependency>
   
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-jwt</artifactId>
        <version>1.1.1.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    
    <!--swagger dependency-->
    <dependency>
        <groupId>org.springdoc</groupId>
        <artifactId>springdoc-openapi-ui</artifactId>
        <version>1.4.4</version>
    </dependency>

    <!--3rd party dependencies-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.12</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>com.auth0</groupId>
        <artifactId>jwks-rsa</artifactId>
        <version>0.14.0</version>
    </dependency>

    <dependency>
        <groupId>io.github.openfeign</groupId>
        <artifactId>feign-gson</artifactId>
        <version>9.3.1</version>
    </dependency>

    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjrt</artifactId>
        <version>1.9.6</version>
    </dependency>

    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>1.9.6</version>
    </dependency>

    <dependency>
        <groupId>com.nimbusds</groupId>
        <artifactId>nimbus-jose-jwt</artifactId>
    </dependency>

请注意,我在代码中使用了 feign 客户端和 Web 客户端。不知道有没有影响

【问题讨论】:

  • 请不要描述您的代码,并努力发布您的 pom 和您的代码。投票结束。
  • 尝试将spring-cloud-starter-loadbalancer 添加到您的 pom.xml 中。如果这没有帮助,请发布您的整个 pom。
  • @OlgaMaciaszek - 我已经尝试过了,但仍然是同样的例外。只有当我认为我有 webflex 和 fiegn 客户端组合时才会发生这种情况
  • @Toerktumlare - 添加了 pom。
  • 请删除明确添加的 spring cloud feign 版本并使用 bom (spring-cloud-starter-openfeign) 附带的依赖项 - 如果有帮助,请告诉我。如果没有,请粘贴整个 pom 文件。

标签: spring spring-boot spring-cloud spring-webflux spring-cloud-feign


【解决方案1】:

看起来我遇到了类似根本原因的问题。 要将 Spring Cloud 与 Spring Boot 一起使用,您必须尊重 versions compatibility。 我有一个基于 Spring Boot (2.3.12.RELEASE) 和 Spring Cloud (Hoxton.SR11) 的项目,这很好。 但我也尝试使用最新版本的com.playtika.reactivefeign:feign-reactive:3.0.3,它实际上依赖于 Spring Cloud (2020.0.x)

结果我遇到了同样的错误

Error creating bean with name 'loadBalancerWebClientBuilderBeanPostProcessor'`

就我而言,我已将 reactivefeign 版本降级为 2.0.31

【讨论】:

    【解决方案2】:

    我已通过删除导致此问题出现问题的不必要的依赖项来解决此问题: 'org.springframework.cloud.client.loadbalancer.reactive.DeferringLoadBalancerExchangeFilterFunction' 找不到。

        <artifactId>spring-boot-starter-webflux</artifactId>
    

    【讨论】:

      猜你喜欢
      • 2014-09-29
      • 2019-04-09
      • 1970-01-01
      • 1970-01-01
      • 2018-12-10
      • 2019-07-27
      • 2015-04-26
      • 1970-01-01
      • 2012-01-08
      相关资源
      最近更新 更多