除Feign之外,在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真正的亮点。
https://github.com/OpenFeign/feign https://cloud.tencent.com/developer/article/1588517 [享学Feign] 十一、Feign通过feign-slf4j模块整合logback记录日志
spring-cloud-openfeign是在Spring Cloud框架集成Feign时独立封装的一个组件,核心功能还是Feign的能力,但是spring-cloud-openfeign提供了在Spring容器环境中使用Feign时更加方便的一些配置和注解。 https://spring.io/projects/spring-cloud-openfeign
如果项目中使用了Spring框架,推荐直接使用spring-cloud-openfeign组件会更加便捷。