出自图灵学院

概述

Feign 中默认使用 JDK 原生的 URLConnection 发送 HTTP 请求,我们可以集成别的组件来替换掉 URLConnection,比如 Apache HttpClient,OkHttp。

Feign发起调用真正执行逻辑:feign.Client#execute (扩展点)
客户端组件配置 - 图1

1 配置Apache HttpClient

引入依赖

  1. <!-- Apache HttpClient -->
  2. <dependency>
  3. <groupId>org.apache.httpcomponents</groupId>
  4. <artifactId>httpclient</artifactId>
  5. <version>4.5.7</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>io.github.openfeign</groupId>
  9. <artifactId>feign-httpclient</artifactId>
  10. <version>10.1.0</version>
  11. </dependency>

然后修改yml配置,将 Feign 的 Apache HttpClient启用 :

  1. feign:
  2. #feign 使用 Apache HttpClient 可以忽略,默认开启
  3. httpclient:
  4. enabled: true

关于配置可参考源码: org.springframework.cloud.openfeign.FeignAutoConfiguration
客户端组件配置 - 图2
测试:调用会进入feign.httpclient.ApacheHttpClient#execute

2 配置 OkHttp

引入依赖

  1. <dependency>
  2. <groupId>io.github.openfeign</groupId>
  3. <artifactId>feign-okhttp</artifactId>
  4. </dependency>

然后修改yml配置,将 Feign 的 HttpClient 禁用,启用 OkHttp,配置如下:

  1. feign:
  2. #feign 使用 okhttp
  3. httpclient:
  4. enabled: false
  5. okhttp:
  6. enabled: true

关于配置可参考源码: org.springframework.cloud.openfeign.FeignAutoConfiguration
客户端组件配置 - 图3
测试:调用会进入feign.okhttp.OkHttpClient#execute