Java的新项目学成在线笔记-day9(六)

2.2 Feign 
2.2.1 Feign介绍 
Feign是Netflix公司开源的轻量级rest客户端,使用Feign可以非常方便的实现Http 客户端。
Spring Cloud引入 Feign并且集成了Ribbon实现客户端负载均衡调用。 
1、在客户端添加依赖
在课程管理服务添加下边的依赖:

[AppleScript] 纯文本查看 复制代码

?

1

2

3

4

5

<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页面的客户端该用接口,
 

[AppleScript] 纯文本查看 复制代码

?

1

@FeignClient(value = XcServiceList.XC_SERVICE_MANAGE_CMS) public interface CmsPageClient {       @GetMapping("/cms/page/get/{id}")     public CmsPage findById(@PathVariable("id") String id); }


3、启动类添加@EnableFeignClients注解
  4、测试
 

[AppleScript] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

@RunWith(SpringRunner.class) @SpringBootTest public class FeignTest { 

   @Autowired

    CmsPageClient cmsPageClient; 

   @Test   

 public void testFeign() {   

     //通过服务id调用cms的查询页面接口   

     CmsPage cmsPage = cmsPageClient.findById("5a754adf6abb500ad05688d9");     

   System.out.println(cmsPage);   

 }

  }


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进行远程调 用。
  2.2.4 Feign注意点 
SpringCloud对Feign进行了增强兼容了SpringMVC的注解 ,我们在使用SpringMVC的注解时需要注意:
1、feignClient接口 有参数在参数必须加@PathVariable("XXX")和@RequestParam("XXX") 
2、feignClient返回值为复杂对象时其类型必须有无参构造函数。
上一篇:Java的新项目学成在线笔记-day9(七)


下一篇:Java的新项目学成在线笔记-day9(九)