Feign与OpenFeign

Feign基于Netflix Feign实现,整合了Spring Cloud Ribbon 和 Spring Cloud Hystrix,除了提供这两者的强大功能外,它还提供了一种声明式的Web服务客户端定义方式。

  • Feign是Springcloud组件中的一个轻量级Restful的HTTP服务客户端,Feign内置了Ribbon,用来做客户端负载均衡,去调用服务注册中心的服务。Feign的使用方式是:使用Feign的注解定义接口,调用这个接口,就可以调用服务注册中心的服务
  • OpenFeign是springcloud在Feign的基础上支持了SpringMVC的注解,如@RequestMapping等等。OpenFeign的@FeignClient可以解析SpringMVC的@RequestMapping注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务。

Spring Cloud Feign在Ribbon基础上做了封装,只需要创建一个接口并用注解的方式配置它,就可以完成对服务提供方的接口绑定,简化了在使用Ribbon时自行封装服务调用客户端的开发量。Spring Cloud Feign具备可插拔的注解支持,包括Feign注解和JAX-RS注解。同时,它在Netflix Feign的基础上扩展了对Spring MVC注解的支持,这对于习惯使用Spring MVC的开发者来说大大减少了学习成本。另外,Feign自身的一些组件如编码器和解码器等,也是以插拔的方式提供,在有需求的时候我们可以方便的扩展和替换它们。

1.引入依赖

image.png

2.启动类上加注解

@EnableFeignClients
image.png

3.声明Client接口

image.png

4.注入Client,调用接口里面的方法即可

image.png

其他:

openFeign内部集成Ribbon,自动实现负载均衡(当被调用的服务启动多个实例时)
image.png