前置条件:
springboot版本:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.15</version>
</parent>
openfeign版本:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>3.1.1</version>
</dependency>
报错提示:
No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalancer?
解决方法1: 设置配置类,禁止使用负载均衡
// 配置类
@Configuration
public class FeignConfig {
@Bean // 配置不使用负载均衡
public Client feignClient() {
return new Client.Default(null, null);
}
}
// 然后openfeign客户端接口类那里使用这个配置(其实不使用也行)
@FeignClient(name = "request-cpinfo" ,configuration = FeignConfig.class)
public interface CpClient {
@GetMapping(value = "/user/getUserListTest")
Result getTest(URI uri,@RequestParam("name") String na);
}
解决方法2: 直接在@FeignClient注解里配置需要的url
// 增加url参数,防止 openfeign调用负载均衡导致报错,即使设置url,但是还是以传参数uri优先
@FeignClient(value = "fsdfsd",url = "http://localhost:8090")
public interface CpClient {
@GetMapping(value = "/user/getUserListTest")
Result getTest(URI uri,@RequestParam("name") String na);
}
// controller中调用场景
@ApiOperation(value = "获取用户列表",notes = "使用json传参")
@GetMapping("/getTest")
public Result getTest(){
URI uri = URI.create("http://localhost:8080");
String name="111";
Result test = cpClient.getTest(uri, name);
System.out.println(test);
return Result.success("操作成功");
}
解决方法3: 按提示引入spring-cloud-starter-loadbalancer依赖,但是此时因为版本兼容问题容易出错,所以额外需要引入springcloud版本依赖,pom依赖如下
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2021.0.5</version> <!-- 使用与 Spring Boot 2.7 兼容的版本 -->
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 负载均衡 openfeign需要使用,需要结合上面注的springcloud进行版本管理 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
<version>3.0.3</version>
</dependency>
解决bug累死人了,今天晚上我要多吃点。
浙公网安备 33010602011771号