1. Feign简介
Feign是Netflix开发的声明式、模块化的HTTP客户端,可帮助我们更加便捷、优雅地调用HTTP API。Spring Cloud 对Feign进行了增强,使Feign支持了SpringMVC注解,并整合了Ribbon和Eureka,从而让Feign的使用更加方便。
2. Feign配置
在启动类添加@EnableFeignClients
创建一个客户端接口,在接口上添加@FeignClient
2.1 使用Java代码自定义Feign配置
在Spring Cloud中,Feign的默认配置是FeignClientsConfiguration,该类定义了Feign默认使用的编码器、解码器、所使用的契约等。
Spring Cloud 允许通过@FeignClient的configuration属性自定义Feign的配置,自定义配置优先级比FeignClientsConfiguration要高。(单个Feign Client)
Spring Cloud 允许通过@EnableFeignClients的defaultConfiguration属性自定义Feign的配置。(全局配置)
2.2 使用属性自定义Feign配置
从Spring Cloud Netflix1.4.0开始,Feign支持使用属性自定义,这种方式比使用Java代码配置的方式更加方便。
connectTimeOut //配置连接超时
readTimeout //配置读取超时
loggerLevel //配置Feign日志级别
encoder //编码器(对请求进行处理)
decoder //解码器(对响应进行处理)
retryer //配置重试
requestInterceptors //配置拦截器
3. Feign对压缩的支持
//开启请求压缩
feign.compression.request.enabled = true
//对哪些媒体类型进行压缩
feign.compression.request.mime-types =text/xml,application/xml,application/json
//压缩请求的最小值
feign.compression.request.min-request-size= 2048
//开启响应压缩
feign.compression.response.enable = true
4. Feign的日志
Feign的日志打印只会打印DEBUG级别,但可以配置Feign的日志级别:
NONE:不记录任何日志(默认值)。
BASIC:记录请求方法、URL、响应状态代码以及执行时间。
HEADERS:记录BASIC级别的基础上,记录请求和响应的header。
FULL:记录请求和响应的header、body和元数据。
5. Feign的文件上传
添加依赖:
添加配置: