0-前言

  spring cloud feign 默认使用httpclient,需要okhttp3的可以进行切换

  当然,其实两者性能目前差别不大,差别较大的是很早之前的版本,所以,喜欢哪个自己选择;

1-实现

1-1、增加okhttp3依赖;

        <!-- feign 依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.2.3.RELEASE</version>
</dependency>
<!-- feign okhttp 依赖-->
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-okhttp</artifactId>
<version>10.10.1</version>
</dependency>

1-2-配置文件增加配置,启用okhttp3:

feign:
httpclient:
enabled: false
okhttp:
enabled: true

这样就可以了,

有的文章还说要FeignOkHttpAutoConfiguration的配置类,那是多少年前的事情了,现在的版本早就不需要配置了,已经自动配置

要切换回httpclient,只需要把配置修改回来,或者直接删掉配置和okhttp依赖就行;

2-关于Feign调用请求头和参数丢失的说明

  这个问题是发现同事在项目中增加了配置类,用来解决feign调用header和query参数丢失问题,所以特别拿出来说明一下;

  其实,这些配置是多此一举,是冗余代码;

  why?

  因为那是历史问题,是早期netflix套件中的feign才会出现的问题,

  具体点说,是com.netflix.feign,feign-httpclient:8.18.0及其下版本才会出现的问题,

  而现在,早就不用Netflix的feign了好吗,现在用的都是io.github.openfeign的版本了,这些问题早就不存在了

  所以,什么解决参数丢失问题,纯属多此一举;

05-04 03:21