java

Feign远程调用

2019-01-15  本文已影响0人  striveSmile

一、注册中心 https://www.jianshu.com/p/e2e3ded1f54a
二、Ribbon https://www.jianshu.com/p/c865a9e3a69c

2.2 Feign

2.2.1 Feign介绍

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

2.2.2 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接口

@FeignClient(value = "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);
    }
}

Feign工作原理如下:
1、 启动类添加@EnableFeignClients注解,Spring会扫描标记了@FeignClient注解的接口,并生成此接口的代理对象

2、 @FeignClient(value = "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返回值为复杂对象时其类型必须有无参构造函数。

上一篇下一篇

猜你喜欢

热点阅读