Feign
是
Netflflix
公司开源的轻量级
rest
客户端,使用
Feign
可以非常方便的实现
Http
客户端。
Spring Cloud
引入
Feign
并且集成了
Ribbon
实现客户端负载均衡调用。
1
、在客户端添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring‐cloud‐starter‐openfeign</artifactId>
</dependency>
<dependency>
<groupId>com.netflix.feign</groupId>
<artifactId>feign‐okhttp</artifactId>
</dependency>
2
、定义
FeignClient
接口
参考
Swagger
文档定义
FeignClient
,注意接口的
Url
、请求参数类型、返回值类型与
Swagger
接口一致。
在课程管理服务中创建
client
包,定义查询
cms
页面的客户端该用接口,
@FeignClient(value = XcServiceList.XC_SERVICE_MANAGE_CMS)
public interface CmsPageClient {
@GetMapping("/cms/page/get/{id}")
public CmsPage findById(@PathVariable("id") String id);
}
3
、启动类添加
@EnableFeignClients
注解
Feign
工作原理如下:
1
、 启动类添加
@EnableFeignClients
注解,
Spring
会扫描标记了
@FeignClient
注解的接口,并生成此接口的代理
对象
2
、
@FeignClient(value = XcServiceList.XC_SERVICE_MANAGE_CMS)
即指定了
cms
的服务名称,
Feign
会从注册中
心获取
cms
服务列表,并通过负载均衡算法进行服务调用。
3
、在接口方法 中使用注解
@GetMapping("/cms/page/get/{id}")
,指定调用的
url
,
Feign
将根据
url
进行远程调
用