Feign 中默认使用 JDK 原生的 URLConnection 发送 HTTP 请求,我们可以集成别的组件来替换掉 URLConnection,比如 Apache HttpClient,OkHttp。
    Feign发起调用真正执行逻辑:feign.Client#execute (扩展点)
    image.png
    3.5.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
    image.png
    测试:调用会进入feign.httpclient.ApacheHttpClient#execute
    3.5.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
    image.png
    测试:调用会进入feign.okhttp.OkHttpClient#execute