注意:本文演示所使用的 Spring Cloud、Spring Cloud Alibaba 的版本分为为
2023.0.0
和2023.0.1.0
。不兼容的版本可能会导致配置不生效等问题。
1、什么是 OpenFeign
Feign 是一个声明式的 Web service 客户端。
它使编写 Web service 客户端更加容易。只需使用 Feign 创建一个Java 接口并对其进行注释就能发起远程 Http 调用。它支持可插拔的注解,包括 Feign 注解和 JAX-RS 注解。Feign 还支持可插拔式编码器和解码器来对请求体和响应体进行编解码。SpringCloud OpenFeign 增加了对 SpringMVC 注解的支持(例如 @GetMapping、@PostMapping等),并支持使用与 SpringWeb 中默认使用的 HttpMessageConverters 相同的 HttpMessageConverters。Spring Cloud OpenFeign 能配合 Nacos(或Eureka) 、Spring Cloud CircuitBreaker 以及 Spring Cloud LoadBalancer,达到服务负载均衡的机制。
2、如何引入 Spring cloud OpenFeign
引入 spring-cloud-starter-openfeign
和 spring-cloud-starter-loadbalancer
依赖。
spring-cloud-starter-loadbalancer
依赖用于提供复杂均衡能力。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
3、启用 OpenFeign
在 Spring Boot 的主启动类上加上 @EnableFeignClients
注解,使 OpenFeign 生效。
@SpringBootApplication
@EnableFeignClients
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
3.1 @EnableFeignClients
注解详解:
package org.springframework.cloud.openfeign;
import org.springframework.context.annotation.Import;
/**
* 扫描 Feign 客户端接口(被 @FeignClient注解的 Java 接口)
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@Import(