码迷,mamicode.com
首页 > 编程语言 > 详细

Spring Cloud入门 (3) - REST客户端Feign

时间:2019-09-23 11:48:03      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:通信   原理   out   map   生成   框架   ace   void   local   

1、简介

  在Spring Cloud集群中,各个角色的通信基于REST服务,因此在调用服务时,就不可避免的需要使用REST服务的请求客户端了。

  Spring 中自带了RestTemplate,RestTemplate使用HttpClient发送请求。

  Spring Cloud 将Feign 框架集成到了 Spring Cloud 的 Netflix 项目中,在其中结合 Ribbon 实现了 负载均衡,所以,我们平时在使用的时候,可能感觉不到 Ribbon 的存在。

 

2、常用的 REST 客户端

  1) Apache CXF

  2) Restlet

 

3、单独使用 Feign 

  1)新建一个 HelloClient 接口

public interface HelloClient{
    @RequestLine("GET /hello")
    String sayHello();
}

  2)执行请求

public class HelloTest{
    public static void mian(String[] args){
        //这一步调用target实际上是用到了AOP的JDK动态代理,生成了一个
        //代理对象,在调用方法时,由Feign.Client执行了发送请求,这里的请求是AOP中的 “Advice” 
        HelloClient hello=Feign.builder().target(HelloClient.class,
            "http://localhost:8080/");
        //调用Hello接口的方法
        System.out.println(hello.sayHello());
  }

 

4、Feign 原理解析
  由上面的例子,我们便可以看出,Feign实际是利用了AOP在为 **Client 接口生成了代理对象,然后利用 “Advice” 的织入,来发送了HTTP请求

 

5、Spring Cloud集成 Feign

  Spring Cloud中集成 Feign 实际上是利用了 Feign 提供的 “翻译器” ,将 Spring Web 中的注解 翻译 给了 Feign 听

  例如:

    Spring Web 中的常见注解 @GetMapping("/hello") ,Spring Cloud 翻译后,相当于 Feign 的

    @RequestLine("GET /hello")

Spring Cloud入门 (3) - REST客户端Feign

标签:通信   原理   out   map   生成   框架   ace   void   local   

原文地址:https://www.cnblogs.com/lkc9/p/11571357.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!