问题:
报错:Description:
Parameter 0 of method retryabeCachingLBClientFactory in org.springframework.cloud.openfeign.ribbon.FeignRibbonClientAutoConfiguration required a bean of type 'org.springframework.cloud.netflix.ribbon.SpringClientFactory' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
The following candidates were found but could not be injected:
- Bean method 'springClientFactory' in 'RibbonAutoConfiguration' not loaded because AllNestedConditions 3 matched 1 did not; NestedCondition on RibbonAutoConfiguration.RibbonClassesConditions.RibbonPresent @ConditionalOnClass did not find required class 'com.netflix.ribbon.Ribbon'; NestedCondition on RibbonAutoConfiguration.RibbonClassesConditions.AsyncRestTemplatePresent @ConditionalOnClass found required class 'org.springframework.web.client.AsyncRestTemplate'; NestedCondition on RibbonAutoConfiguration.RibbonClassesConditions.RestTemplatePresent @ConditionalOnClass found required class 'org.springframework.web.client.RestTemplate'; NestedCondition on RibbonAutoConfiguration.RibbonClassesConditions.IClientPresent @ConditionalOnClass found required class 'com.netflix.client.IClient'
Action:
Consider revisiting the entries above or defining a bean of type 'org.springframework.cloud.netflix.ribbon.SpringClientFactory' in your configuration.
。依赖spring-cloud-dependencies,版本:Hoxton.SR9。spring-boot-starter-parent, 2.3.7.RELEASE。spring-cloud-starter-openfeign,2.2.6.RELEASE。spring-cloud-netflix-ribbon, 2.2.6.RELEASE。
如何解决?
这个问题出现的原因是 Spring Cloud OpenFeign 依赖 Ribbon,但是你的项目中缺少了 Ribbon 的核心依赖 `com.netflix.ribbon:ribbon`。虽然你引入了 `spring-cloud-netflix-ribbon`,但它只是一个整合包,并不包含 Ribbon 的核心实现。 Spring Boot 2.3.x 开始,Ribbon 依赖需要被显式引入。
解决方法如下:
1. **引入 Ribbon 核心依赖:**
在你的 `pom.xml` 文件中添加以下依赖:
```xml
<dependency>
<groupId>com.netflix.ribbon</groupId>
<artifactId>ribbon</artifactId>
<version>2.7.18</version> <!-- 与你的Spring Cloud版本兼容的Ribbon版本 -->
</dependency>
```
**重要:** Ribbon 2.7.18 是最后一个版本,更高版本不再维护。请确保你的 Spring Cloud 版本与 Ribbon 版本兼容。Hoxton.SR9 应该与 2.7.18 兼容。 如果使用其他 Spring Cloud 版本,请查找兼容的 Ribbon 版本。
2. **检查 Spring Cloud 版本兼容性:**
确保你的 Spring Cloud 版本 (Hoxton.SR9) 和 Spring Boot 版本 (2.3.7.RELEASE) 以及 Spring Cloud OpenFeign 和 Spring Cloud Netflix Ribbon 的版本 (2.2.6.RELEASE) 相互兼容。 你可以在 Spring Cloud 的官方文档中查找兼容性矩阵。 不兼容的版本组合也可能导致类似问题。
3. **重新构建项目:**
添加依赖后,重新构建你的项目,确保依赖被正确下载和引入。
4. **如果仍然报错:**
如果以上步骤仍然无法解决问题,请检查以下几点:
* **依赖冲突:** 检查你的 `pom.xml` 文件中是否存在与 Ribbon 冲突的依赖。使用 `mvn dependency:tree` 命令可以查看项目的依赖树,找出潜在的冲突。
* **排除传递依赖:** 如果存在冲突,可以使用 `<exclusions>` 标签在你的 `pom.xml` 文件中排除冲突的依赖。
* **IDE 缓存:** 尝试清除你的 IDE 缓存并重新导入项目。
通过以上步骤,你应该能够解决 `SpringClientFactory` 找不到的问题,并成功使用 Spring Cloud OpenFeign 和 Ribbon。 记住仔细检查版本兼容性,这是解决 Spring Cloud 相关问题的重要一步。
标签:openfeign,启动,Spring,netflix,Cloud,报错,Ribbon,版本,ribbon From: https://www.cnblogs.com/parkdifferent/p/18578660