考虑在配置中定义类型 'org.springframework.cloud.openfeign.FeignContext' 的 Bean



我正在尝试运行应用程序,但这个错误一直提示。

:

com.clientui.clientui.controller.ClientController中构造函数的参数0需要一个类型为'org.springframework.cloud.openfeign '的bean。"FeignContext",找不到。

:

考虑定义一个类型为org.springframework.cloud.openfeign的bean。在你的配置中添加FeignContext

代码如下:

主要

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版本更新到3.0.0时遇到了同样的问题,我认为这是spring cloud和spring boot的autoconfigure的一些兼容性错误。我通过在应用程序中添加注释@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);
}
}

我使用Spring Boot 3.0.0并面临同样的问题,并通过使用2022.0.0-RC2来解决它spring-cloud-dependencies版本。(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存储库中找到它,所以你也应该将它添加到pom.xml中的repositories部分:

<repository>
<id>lib-m</id>
<name>Spring Lib M</name>
<url>https://repo.spring.io/libs-milestone/</url>
</repository>
import org.springframework.cloud.openfeign.FeignAutoConfiguration;
@ImportAutoConfiguration({FeignAutoConfiguration.class})

在主应用程序中添加这些行可以修复此问题。

如果你使用的是Spring 3.0.0的" Spring .factories"已被移除。如果你的依赖项使用了这个,自动导入的autoconfigurations就会被破坏。

https://github.com/spring - projects/spring boot/wiki/spring -引导- 3.0 -迁移-指南# auto-configuration-files

在不修改依赖项本身的情况下修复这个问题的一种方法是显式地使用@ImportAutoConfiguration({autoconfiguration类的列表})。您还可以使用新的功能"导入文件"。由Spring提供。正确的做法是迁移"春厂"。导入文件"

对于我来说,需要添加这两个配置类:

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

我在更新springboot 3时得到相同的错误。我通过在我的主应用程序

中添加以下内容来解决这个问题。
@ImportAutoConfiguration({FeignAutoConfiguration.class, HttpClientConfiguration.class})

相关内容

  • 没有找到相关文章

最新更新