声明式服务调用Feign

蔚落 2022-04-10 02:45 428阅读 0赞

Feign介绍

Feign是Netflix公司开源的轻量级rest客户端,使用Feign可以非常方便的实现Http 客户端。Spring Cloud引入.Feign并且集成了Ribbon实现客户端负载均衡调用。

Feign 整合测试

1、在客户端添加依赖,所需依赖如下

  1. <dependency>
  2. <groupId>org.springframework.cloud</groupId>
  3. <artifactId>spring-cloud-starter-openfeign</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>com.squareup.okhttp3</groupId>
  7. <artifactId>okhttp</artifactId>
  8. </dependency>

2、定义FeignClient接口

  1. import org.springframework.cloud.openfeign.FeignClient;
  2. import org.springframework.web.bind.annotation.GetMapping;
  3. import org.springframework.web.bind.annotation.PathVariable;
  4. @FeignClient(value = "XC-SERVER-CMS")
  5. public interface CmsPageClient {
  6. @GetMapping("/get/{id}")
  7. public CmsPage findPageById(@PathVariable("id") String id);
  8. }

3.在启动类中添加注解

  1. 启动类添加@EnableFeignClients注解

4.测试

  1. @Resource
  2. private CmsPageClient cmsPageClient;
  3. @Test
  4. public void fun02(){
  5. CmsPage cmsPage = cmsPageClient.findPageById("5a754adf6abb500ad05688d9");
  6. System.out.println(cmsPage);
  7. }

执行结果

20181224113428585.png

Feign 执行流程

1.启动类添加@EnableFeignClients注解,spring会扫描标记了 FeignClients注解的接口,并生成接口的代理对象

2.@FeignClient(value = XcServiceList.XC_SERVICE_MANAGE_CMS)即指定了cms的服务名称,Feign会从注册中
心获取cms服务列表,并通过负载均衡算法进行服务调用

3.接口方法注解@GetMapping(“/get/{id}“) ,指定了调用url,并且指定了调用方法的类型,feign根据url进行调用

Feign 注意事项

1.feignClient接口 有参数在参数必须加@PathVariable(“XXX”)和@RequestParam(“XXX”)

2.feignClient返回值为复杂对象时其类型必须有无参构造函数。

发表评论

表情:
评论列表 (有 0 条评论,428人围观)

还没有评论,来说两句吧...

相关阅读