Feign远程调用

一、Feign 介绍
 
    Feign Netflflix 公司开源的轻量级 rest 客户端,使用 Feign 可以非常方便的实现 Http 客户端。 Spring Cloud 引入 Feign并且集成了 Ribbon 实现客户端负载均衡调用。
 
二、 Feign 测试
 
    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 接口
       
         a、参考被调controller接口定义( @RequestMapping("/cms/page")
        
         b、参考被调controller中方法的定义( @GetMapping("/get/{id}"))
 
         c、例子:(XcServiceList.XC_SERVICE_MANAGE_CMS为Eureka注册中心服务名)
@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 、测试
@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); 

   } 
}
5、Feign工作原理
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进行远程调 用。

6、Feign注意点

    SpringCloud Feign 进行了增强兼容了 SpringMVC 的注解 ,我们在使用 SpringMVC 的注解时需要注意:
    1 feignClient 接口 有参数在参数必须加 @PathVariable("XXX") @RequestParam("XXX")
    2 feignClient 返回值为复杂对象时其类型必须有无参构造函数。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值