参考文章:feign和openFeign区别和openFeign教程_keep one's resolveY的博客-CSDN博客_openfeign和feign区别
Spring-Cloud-OpenFeign使用教程 - 知乎
1.OpenFeign介绍
是一个Web声明式的Http客户端远程远程调用工具,底层是封装HttpClient技术,提供接口和注解形式调用。
注意feign客户端调用的事项:
- 如果请求参数没有加上注解的话,默认采用post请求发送。
- 服务的名称命名不能够有下划线,只能使用中划线,否则会报下列的错。
java.lang.IllegalStateException:Service id not legal hostname
2.feign和openfeign的区别
- 底层都是内置了Ribbon,去调用注册中心的服务。
- Feign是Netflix公司写的,是SpringCloud组件中的一个轻量级RESTful的HTTP服务客户端,是SpringCloud中的第一代负载均衡客户端。
- OpenFeign是SpringCloud自己研发的,在Feign的基础上支持了Spring MVC的注解,如@RequestMapping等等。是SpringCloud中的第二代负载均衡客户端。
- Feign本身不支持Spring MVC的注解,使用Feign的注解定义接口,调用这个接口,就可以调用服务注册中心的服务
- OpenFeign的@FeignClient可以解析SpringMVC的@RequestMapping注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务。
- Feign是Spring Cloud组件中的一个轻量级RESTful的HTTP服务客户端,
- Feign的使用方式是:使用Feign的注解定义接口,调用这个接口,就可以调用服务注册中心的服务。
- Feign是在2019就已经不再更新了,通过maven网站就可以看出来,随之取代的是OpenFeign,从名字上就可以知道,它是Feign的升级版。
Feign的依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
OpenFeign的依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
说明:
springcloud F 及F版本以上 springboot 2.0 以上基本上使用openfeign,openfeign 如果从框架结构上看就是2019年feign停更后出现版本,也可以说大多数新项目都用openfeign ,2018年以前的项目在使用feign