一、Feign的组成
| 接口 | 作用 | 默认值 | | ------------------ | ------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------- | | Feign.Builder | Feign的入口 | Feign.Builder | | Client | Feign底层用什么去请求 | 和Ribbon配合时:LoadBalancerFeignClient<br />不和Ribbon配合时:Feign.Client.Default | | Contract | 契约,注解支持 | SpringMVC Contract | | Encoder | 解码器,用于将独享转换成HTTP请求消息体 | SpringEncoder | 复制代码
| Decoder | 编码器,将相应消息体转成对象 | ResponseEntityDecoder | | Logger | 日志管理器 | Slf4jLogger | | RequestInterceptor | 用于为每个请求添加通用逻辑(拦截器,例子:比如想给每个请求都带上heared) | 无 |
Feign.Client.Default 利用的是我们默认的HttpURLConnection,他是没有连接池的。也没有资源管理这个概念,性能不是很好,
二、细粒度配置自定义
1、代码方式-指定日志级别
feign默认是不打印任何日志的,但是我们希望打印一些日志信息。比如调用的时间。
Feign设置方式就不同的,他有四个级别如下:
级别 | 打印日志内容 |
NONE(默认值) | 不记录任何日志 |
BASIC | 仅记录请求方法、URL、响应状态代码以及执行时间 |
HEADERS | 记录BASIC级别的基础上,记录请求和响应的header |
FULL | 记录请求和响应的header、body和元数据 |
1.1 指定springboot日志
Feign日志是基于Spring boot的日志所以先设置SpringBoot日志:
logging: level: com.msb: debug 复制代码
1.2 创建配置类
BASIC使用于生产环境 FULL适用于开发环境
创建配置类UserFeignConfiguration ,注意这里并没有增加@Configuration
package com.msb.order.configuration; import feign.Logger; import org.springframework.context.annotation.Bean; //这里不能增加@Configuration,如果添加了就会变为全局配置文件。 public class StockFeignConfiguration { @Bean public Logger.Level level(){ return Logger.Level.FULL; } } 复制代码
更改请求feign的配置文件。
1.3 将配置类引入
2、属性方式-指定日志级别
feign.client.config.<feignName>.loggerLevel:full
logging: level: com.msb: debug feign: client: config: msb-stock: loggerLevel: full