2.2.2 配置启用feign:okhttp:enabled: true复制代码三、如何修改日志级别在发送和接收请求的时候,其内部将日志的打印输出定义成了四个等级,对应的详情如下:
说明
NONE
不做任何记录
BASIC
仅记录请求方法和 URL 以及响应状态代码和执行时间
HEADERS
记录基本信息以及请求和响应标头
FULL
记录请求和响应的标题,正文和元数据
3.1 通过配置文件修改日志级别注意需要指定接口的全限定名
logging:level:com.zto.titans.test.feign.service.TestService : DEBUG复制代码3.2 通过配置类修改日志级别@Configurationpublic class FooConfiguration {@BeanLogger.Level feignLoggerLevel() {return Logger.Level.FULL;}}复制代码这个一看即懂,不再废话 。四、如何实现数据压缩可以分别对 HTTP 通信的request和response设置是否启用 GZIP 压缩,配置方法如下:
feign:compression:request:enabled: truemime-types: text/xml,application/xml,application/json # 配置压缩支持的MIME TYPEmin-request-size: 2048# 配置压缩数据大小的下限response:enabled: true # 配置响应GZIP压缩复制代码五、FeignClient 的配置以及配置的优先级机制有 2 种途径设置 FeignClient 的配置,通过自定义配置类来设置配置和在配置文件中设置,其中配置文件方式有点特殊,它里边可以指定全局配置对所有 FeignClient 有效,也可以为特定名称的 FeignClient 设置专属的配置 。5.1 通过自定义配置类来定制配置实现一个配置类
public class TestConfiguration {@BeanLogger.Level feignLoggerLevel() {return Logger.Level.FULL;}}复制代码将配置类 TestConfiguration 指定给configuration 。@FeignClient(name = "test-service",configuration = {FeignInterceptor2.class,TestConfiguration.class})复制代码5.2 在配置文件中设置全局配置feign.client.config.default.xxx,这个default意为全局的配置属性 。feign:client:config:default:connectTimeout: 5000readTimeout: 5000loggerLevel: basic复制代码5.3 在配置文件中设置专属配置feign.client.config.feignName.xxx , 给名字为feignName的FeignClient指定专属的配置 。feign:client:config:feignName:connectTimeout: 5000readTimeout: 5000loggerLevel: fullerrorDecoder: com.example.SimpleErrorDecoderretryer: com.example.SimpleRetryerrequestInterceptors:- com.example.FooRequestInterceptor- com.example.BarRequestInterceptordecode404: falseencoder: com.example.SimpleEncoderdecoder: com.example.SimpleDecoder复制代码5.4 理解配置的优先级与拦截器的追加原则从org.springframework.cloud.openfeign.FeignClientFactoryBean#configureFeign中可以确认以上 3 种配置的优先级:
configureUsingConfiguration(context, builder); // 1configureUsingProperties(properties.getConfig().get(properties.getDefaultConfig()),builder); //2configureUsingProperties(properties.getConfig().get(this.contextId),builder);//3复制代码- 第 1 类为通过自定义配置类来指定配置
- 第 2 类为在配置文件中的feign.client.config.default.xxx设置全局配置
- 第 3 类为在配置文件中的feign.client.config.feignName.xxx设置专属配置
5.4.2 追加的原则RequestInterceptor 是拦截器,可以在发送前做一些处理,比如统一添加header信息 。每一类中的requestInterceptors可以存储多个拦截器,拦截器并非覆盖的效果,而是链式追加的效果;从执行顺序来看优先级是:1 > 2 > 3,即先执行 配置类中指定的拦截器,然后是 配置文件中指定的全局拦截器,最后是配置文件中指定的专属拦截器 。
需特别注意:RequestInterceptor 的实现类(例如 RI-A,RI-B)上如果添加了@Component注解,就都会被扫描识别到,并被追加到第一类的requestInterceptors列表中;倘若不小心 RI-A 还在第 2 类中又被指定了,则还会将拦截器 RI-A 追加在第二类的requestInterceptors列表中,结果是会 RI-A 总计会执行 2 次;若也在第三类中指定 RI-A,则 RI-A 也在其列表中追加,结果是 RI-A 总计会执行 3 次 。
5.4.3 拦截器的效果验证以一个实例来验证说明效果
- 自定义三个 RequestInterceptor
class FeignInterceptor implements RequestInterceptor {@Overridepublic void apply(RequestTemplate requestTemplate) {requestTemplate.header("user", "myuser1");requestTemplate.header("password", "mypassword");}}复制代码
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 使用Next.js创建Blog给Blog添加主题模式和seo
- 使用Next.js创建Blog
- 本地连接受限制、本地连接黄色感叹号
- 网卡驱动坏了怎么办
- 笔记本电脑如何自动更换壁纸
- 征服者的正确使用方式和对线技巧
- 正确的护肤品使用顺序
- UG10.0中如何直接插入螺纹孔?
- WPS Excel表格中函数运算的基本知识
- 云闪付如何使用转账、付款、信用卡还款?
