前言
上一篇博客中展示了使用RestTemplate,进行服务与服务之间的调用,并结合@LoadBalanced
注解在客户端实现负载均衡。
这里展示如何更加优雅的使用OpenFeign声明式服务调用。先大概了解一下Feign与OpenFeign有什么区别。
Feign与OpenFeign
-
Feign
Feign是Spring Cloud组件中基于RestFul的HTTP服务客户端
Feign内置Ribbon,同
RestTemplate
+@LoadBalanced
效果一样在客户端做负载均衡。使用Feign的注解定义接口,调用这个接口就可以调用服务注册中心的服务,但是Feign有自己的注解,并不支持Spring MVC的注解
-
OpenFeign
OpenFeign是Spring Cloud对Feign的加强版,在原有功能下,提供了对Spring MVC中注解的支持。比如
@RequestMapping
,当然还有很多。@FeignClient
注解可以解析@RequestMapping
注解下的接口,再通过代理生成实现类,同时在实现类中做负载均衡调用其他的服务。使用OpenFeign极大的简化了服务于服务之间的调用(通信)。需要注意
@RequesMapping
不能在类名上与@FeignClient
同时使用
使用OpenFeign声明式服务调用
-
创建新的服务消费者
在使用Idea快捷创建的时候,额外勾选中 OpenFeign。
maven依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign