七叶笔记 » java编程 » Spring Cloud超详细i讲解Feign自定义配置与使用

Spring Cloud超详细i讲解Feign自定义配置与使用

日志配置

有时候我们遇到 Bug,比如接口调用失败、参数没收到等

问题,或者想看看调用性能,就需要配置 Feign 的日志了,

以此让 Feign 把请求信息输出来。

首先定义一个配置类,代码如下所示。

通过源码可以看到日志等级有 4 种,分别是:

NONE:不输出日志。BASIC:只输出请求方法的 URL 和响应的状态码以及接 口执行的时间。HEADERS:将 BASIC 信息和请求头信息输出。FULL:输出完整的请求信息。

在 Feign Client 中的 @FeignClient 注解中指定使用的配置类,代码如下所示。

在配置文件中执行 Client 的日志级别才能正常输出日志,

格式是“logging.level.client 类地址=级别”。

logging:   level:     com.by.remote.UserRemoteClient: debug

Basic 认证配置

通常我们调用的接口都是有权限控制的,很多时候可能认证

的值是通过参数去传递的,还有就是通过请求头去传递认证

信息,比如 Basic 认证方式。在 Feign 中我们可以直接配置

Basic 认证,代码如下所示。

或者你可以自定义属于自己的认证方式,其实就是自定义一

个请求拦截器。在请求之前做认证操作,然后往请求头中设

置认证之后的信息。通过实现 RequestInterceptor 接口来

自定义认证方式,代码如下所示。

然后将配置改成我们自定义的就可以了,这样当 Feign 去请

求接口的时候,每次请求之前都会进入

FeignAuthInteceptor的 apply 方法中,在里面就可以做属

于你的逻辑了,代码如下所示。

超时时间配置

通过 Options 可以配置连接超时时间和读取超时时间(代

码如下所示),Options 的第一个参数是连接超时时间

(ms),默认值是 10×1000;第二个是取超时时间

(ms),默认值是 60×1000。

客户端组件配置

Feign 中默认使用apache httpclient 发送 HTTP 请求,我

们可以集成别的组件来替换掉,比如,OkHttp。

配置 OkHttp 只需要加入 OkHttp 的依赖,代码如下所示。

然后修改配置,将 Feign 的 HttpClient 禁用,启用

OkHttp,配置如下:

feign:   httpclient:   enabled: false #禁用    okhttp:     enabled: true # 启用

关于配置可参考源码

org.springframework.cloud.openfeign.FeignAutoCon

figuration

GZIP压缩配置

开启压缩可以有效节约网络资源,提升接口性能,我们可以

配置 GZIP 来压缩数据:

feign: compression:  request:   enabled: true  response:   enabled: true

还可以配置压缩的类型、最小压缩值的标准:

feign: compression:  request:   enabled: true    mime-types: text/xml,application/xml,application/json min-request-size: 2048

只有当 Feign 的 Http Client 不是 okhttp3 的时候,压缩才

会生效,配置源码在 org.springframework.cloud.openfeign.encoding.FeignAcceptGzipE

ncodingAutoConfiguration,代码如下所示。

核心代码就是 @ConditionalOnMissingBean

(type=“okhttp3.OkHttpClient”),表示 Spring

BeanFactory 中不包含指定的 bean 时条件匹配,也就是没

有启用 okhttp3 时才会进行压缩配置。

继承特性

Feign 的继承特性可以让服务的接口定义单独抽出来,作为

公共的依赖,以方便使用。

创建一个module,用于存放 API 接口的定义,增加 Feign

的依赖,定义接口,指定服务名称,代码如下所示

打包安装到仓库

修改用户中心实现,先引入依赖

实现 UserRemoteClient 接口,代码如下所示。

修改订单服务,同样引入api,调用代码

多参数请求构造

多参数请求构造分为 GET 请求和 POST 请求两种方式,首

先来看 GET 请求的多参数请求构造方式,代码如下所示。

另一种是通过 Map 来传递多个参数,参数数量可以动态改

变,笔者在这里还是推荐大家用固定的参数方式,不要用

Map 来传递参数,Map 传递参数最大的问题是可以随意传

参。代码如下所示。

POST 请求多参数就定义一个参数类,通过

@RequestBody 注解的方式来实现,代码如下所示。

注意: @RequestBody @PathVariable 在实现类上也要

加上注解

到此这篇关于Spring Cloud超详细i讲解Feign自定义配置与使用的文章就介绍到这了,更多相关Spring Cloud Feign内容请搜索七叶笔记以前的文章或继续浏览下面的相关文章希望大家以后多多支持七叶笔记!

相关文章