Feign,Apache Http Client,OkHttp的区别
来自:https://blog.csdn.net/cristianoxm/article/details/120942612
一、在Java中可以使用的HTTP客户端组件主要有3个,如下:
- (1)HttpURLConnection,JDK自带
- (2)Apache HttpComponents,独立的HTTP客户端实现,使用广泛,目前已发展到5.x版本,详见:https://hc.apache.org/index.html
- (3)OkHttp,一个新出现的HTTP客户端,详见:https://square.github.io/okhttp/
为什么已经存在了如Apache HTTPClient和OkHttp这样优秀HTTP客户端组件了,还会出现Feign呢?难道不是重复性开发吗?
实际上,Feign是一个Http客户端框架,它并没有去做跟Apache HTTPClient或OkHttp一样重复的事情,而是开发了一个框架,用于集成URLConnection,Apache Http Client,OkHttp实现具体的HTTP请求。
Feign基于注解实现配置,提供了许多贴近业务层更加丰富实用的功能,如:重试机制等,这才是Feign真正的亮点。

spring-cloud-openfeign是在Spring Cloud框架集成Feign时独立封装的一个组件,核心功能还是Feign的能力,但是spring-cloud-openfeign提供了在Spring容器环境中使用Feign时更加方便的一些配置和注解。
https://spring.io/projects/spring-cloud-openfeign 。如果项目中使用了Spring框架,推荐直接使用spring-cloud-openfeign组件会更加便捷。
二、Feign在默认情况下,它发送Http请求使用的是JDK源生的HttpURLConnection
在实际生产环境下,直接使用它是100%不可取的,这就需要我们使用更加高效的HC。Feign的模块中有三个关于HC的子模块:feign-okhttp、feign-httpclient、feign-googlehttpclient
关于使用okhttp替换openfeign默认的HttpURLConnection,参考文章:https://www.cnblogs.com/ArlenHard/articles/17250838.html

浙公网安备 33010602011771号