[享学享学Feign] 九、九、Feign + OkHttp和和Feign + Apache
HttpClient哪个更香?哪个更香?
Redis作者说到:“灵活性被过分高估–>约束才是解放”。
–> 返回专栏总目录 <–
代码下载地址:https://github.com/f641385712/feign-learning
目录目录前言正文OkHttp使用示例源码解析Apache HttpClient使用示例源码解析GoogleHttpClient哪个更香?总结声明
前言前言
前八篇文章介绍完了feign-core核心内容,从本篇开始将介绍它的“其它模块”。其实核心模块可以独立的work,但是不免它的
能力偏弱,比如只能编码字符串类型、只能解码字符串类型,默认使用java.net.HttpURLConnection作为HC…
本篇将介绍它的第一个模块:Client相关模块。我们知道,流行的开源Http库的性能均远高于JDK源生的HttpURLConnection,因
此实际生产中肯定是肯定是用的三方库来发送Http请求。
Feign它提供了feign.Client抽象来发送Http请求,因此使得它拥有良好的扩展性,而恰好Feign的子模块里亦提供了对OkHttp以
及Apache HttpClient的整合,本文将教你如何把Feign切换为第三方HC以提高性能。
正文正文
我们知道Feign在默认情况下,它发送Http请求使用的是JDK源生的HttpURLConnection。而在实际生产环境下,直接使用它
是100%不可取的不可取的,这就需要我们使用更加高效更加高效的HC。
Feign的模块中有三个关于HC的子模块:feign-okhttp、feign-httpclient、feign-googlehttpclient。本文将会讨论前两者
OkHttp
它的GAV如下:
io.github.openfeign
feign-okhttp
${feign.version}
“携带”的okhttp版本号是:3.6.0。(若把Feign调整到最新版本10.7.4,那么它携带的okhttp版本号也就是最新的3.14.6的了)
说明:okhttp虽然目前最新版本是4.x版本的,关于区别你可以简单粗暴的理解:前者是用前者是用kotlin改写了,后者还是用改写了,后者还是用Java写写
的的,其它的并无什么变化。
所以,在Server端使用okhttp,请务必使用3.x版本~移动端可酌情使用4.x版本
通过前八篇文章对Feign核心内容核心内容的学习,知道Feign最终是通过它的feign.Client这个API去发送远程请求的,而feign.Client是可
以在构建的时候在构建的时候由使用者自定义指定的。有了以上理论的支撑,若想切换最终发送Http请求的HC,仅需在构建时使用自己仅需在构建时使用自己
的的feign.Client即可即可。
使用示例使用示例
public interface DemoClient {
@RequestLine("GET /feign/demo1?name={name}")
String getDemo1(@Param("name") String name);
}
构建Feign时,指定使用OkHttpClient:
public static void main(String[] args) {
DemoClient client = Feign.builder()
.client(new OkHttpClient()) // 显示指定使用OkHttpClient
.target(DemoClient.class, "http://localhost:8080");
String result = client.getDemo1("YourBatman");
System.out.println(result);
}
一切正常work。附如下截图,以证明确实是okhttp在生效:
评论0