美文网首页java
Feign远程调用

Feign远程调用

作者: striveSmile | 来源:发表于2019-01-15 18:18 被阅读0次

    一、注册中心 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返回值为复杂对象时其类型必须有无参构造函数。

    相关文章

      网友评论

        本文标题:Feign远程调用

        本文链接:https://www.haomeiwen.com/subject/rygydqtx.html