考虑在配置中定义“org.springframework.cloud.openfeign.FeignContext”类型的bean

问题描述 投票:0回答:6

我正在尝试运行该应用程序,但不断提示此错误。

描述

com.clientui.clientui.controller.ClientController 中构造函数的参数 0 需要一个类型为“org.springframework.cloud.openfeign.FeignContext”的 bean,但无法找到。

行动

考虑在配置中定义“org.springframework.cloud.openfeign.FeignContext”类型的 bean。

这是代码:

主要

    package com.clientui.clientui;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@SpringBootApplication
@EnableFeignClients("com.clientui")

public class ClientuiApplication {

    public static void main(String[] args) {
        SpringApplication.run(ClientuiApplication.class, args);
    }

}

控制器

package com.clientui.clientui.controller;

import com.clientui.clientui.beans.ProductBean;
import com.clientui.clientui.proxies.MicroserviceProduitsProxy;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;

@Controller
public class ClientController {

    private final MicroserviceProduitsProxy produitsProxy;

    public ClientController(MicroserviceProduitsProxy produitsProxy){
        this.produitsProxy = produitsProxy;
    }

    @RequestMapping("/")
    public String accueil(Model model){
        List<ProductBean> produits =  produitsProxy.listeDesProduits();
        model.addAttribute("produits", produits);
        return "Accueil";
    }
}
spring-boot microservices spring-cloud-feign
6个回答
18
投票

我在将 spring-boot 版本更新到 3.0.0 时遇到了同样的问题,我认为这是 Spring Cloud 和 Spring Boot 自动配置的一些兼容性错误。 我通过在应用程序中添加注释

@ImportAutoConfiguration({FeignAutoConfiguration.class})
解决了这个问题,在您的情况下:

import org.springframework.cloud.openfeign.FeignAutoConfiguration;

@SpringBootApplication
@EnableFeignClients("com.clientui")
@ImportAutoConfiguration({FeignAutoConfiguration.class})
public class ClientuiApplication {

    public static void main(String[] args) {
        SpringApplication.run(ClientuiApplication.class, args);
    }

}

4
投票

我使用 Spring Boot 3.0.0 并遇到了同样的问题,并通过使用 2022.0.0-RC2 版本的 spring-cloud-dependency 解决了它。 (https://docs.spring.io/spring-cloud/docs/2022.0.0-RC2/reference/html/)。它应该与 Spring Boot 3.0.0 一起使用。

如果您使用 Maven,请将其添加到 pom.xml 中的

dependencyManagement
部分:

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-dependencies</artifactId>
  <version>2022.0.0-RC2</version>
  <type>pom</type>
  <scope>import</scope>
</dependency>

注意:在我写这个答案时 2022.0.0-RC2 版本在中央存储库中不可用,但您可以在 Spring Lib M 存储库中找到它,因此您还应该将其添加到您的

repositories
部分pom.xml:

<repository>
  <id>lib-m</id>
  <name>Spring Lib M</name>
  <url>https://repo.spring.io/libs-milestone/</url>
</repository>

4
投票
import org.springframework.cloud.openfeign.FeignAutoConfiguration;

@ImportAutoConfiguration({FeignAutoConfiguration.class})

在主应用程序上添加这些行可以解决问题。


0
投票

如果您使用 Spring 3.0.0,“spring.factories”已被删除。如果您的依赖项使用此功能,自动配置的自动导入就会被破坏。

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Migration-Guide#auto-configuration-files

在不修改依赖本身的情况下解决此问题的一种方法是显式使用 @ImportAutoConfiguration({ list of autoconfiguration classes }) 。您还可以使用 Spring 提供的新功能“导入文件”。正确的方法是将“spring.factories”迁移到依赖项的“导入文件”。


0
投票

就我而言,需要添加这两个配置类:

@ImportAutoConfiguration({FeignAutoConfiguration.class, HttpClientConfiguration.class})

0
投票

将我的应用程序更新到 springboot 3.0 时,我遇到了同样的错误。 我在主应用程序中添加了 @ImportAutoConfiguration({FeignAutoConfiguration.class}) ,之后我收到以下错误。 引起:org.springframework.beans.factory.UnsatisfiedDependencyException:创建在类路径资源[org/springframework/cloud/openfeign/FeignAutoConfiguration$HttpClientFeignConfiguration.class]中定义的名称为“connectionManager”的bean时出错:通过方法“connectionManager”表达的依赖关系不满足参数0:没有“org.springframework.cloud.commons.httpclient.ApacheHttpClientConnectionManagerFactory”类型的合格bean可用:预计至少有1个符合自动装配候选资格的bean。依赖注释:{}

如果有人有任何想法,请帮助我。

© www.soinside.com 2019 - 2024. All rights reserved.