1. Spring Cloud OpenFeign简介
OpenFeign是SpringCloud提供的一个声明式的伪Http客户端,它使得调用远程服务就像调用本地服务一样简单,只需要创建一个接口并添加一个注解即可。OpenFeign是SpringCloud在Feign的基础上支持了Spring MVC的注解,并通过动态代理的方式产生实现类来做负载均衡并进行调用其他服务。
1.1 OpenFeign使用流程:
- 引入
Spring Cloud OpenFeign的依赖 - 启动类上添加注解
@EnableFeignCleints - 按照
Feign的规则定义接口并添加@FeignClient注解 - 在需要使用
Feign接口的类里注入,直接调用接口方法
2. OpenFeign的使用
- 在
pom.xml文件中添加依赖:
1 | <dependency> |
- 在启动类上,加上
@EnableFeignCleints注解:
1 | // basePackages 是Feign接口定义的路径 |
- 按照
Feign的规则定义接口:
1 | // 括号内是远程调用微服务在注册中心的服务名 |
- 调用
Feign接口方法
1 |
|
- 远程服务接口:
1 |
|
3. OpenFeign的核心工作原理:
- 通过
@EnableFeignCleints触发Spring应用程序对classpath中@FeignClient修饰类的扫描 - 解析到
@FeignClient修饰类后,Feign框架通过扩展SpringBeanDeifinition的注册逻辑,最终注册一个FeignClientFacotoryBean进入Spring容器 Spring容器在初始化其他用到@FeignClient接口的类时,获得的是FeignClientFacotryBean产生的一个代理对象Proxy.- 基于
java原生的动态代理机制,针对Proxy的调用,都会被统一转发给Feign框架所定义的一个InvocationHandler,由该Handler完成后续的HTTP转换,发送,接收,翻译HTTP响应的工作
4. OpenFeign日志
Feign 和 RestTemplate 不一样 ,对请求细节封装的更加彻底,不管是请求还是请求的参数,还是响应的状态都看不到,想要看到请求的细节需要通过Feign的日志,我们可以通过配置来调整日志级别,从而了解OpenFeign中Http请求的细节。即对OpenFeign远程接口调用的情况进行监控和日志输出。
4.1 日志级别
NONE:默认级别,不显示日志BASIC:仅记录请求方法、URL、响应状态及执行时间HEADERS:除了BASIC中定义的信息之外,还有请求和响应头信息FULL:除了HEADERS中定义的信息之外,还有请求和响应正文及元数据信息
4.2 配置日志bean
1 |
|
4.3 开启日志
在YMAL配置文件中中指定监控的接口,以及日志级别
1 | logging: |

原文链接: http://chaooo.github.io/2021/11/12/spring-cloud-feign.html
版权声明: 转载请注明出处.