Spring Cloud入门 - REST客户端Feign
Posted lkc9
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Cloud入门 - REST客户端Feign相关的知识,希望对你有一定的参考价值。
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入门 - REST客户端Feign的主要内容,如果未能解决你的问题,请参考以下文章
Spring Cloud 入门教程: 用声明式REST客户端Feign调用远端HTTP服务
Spring Cloud Alibaba入门教程-3.2微服务负载均衡器LoadBalancer
《SpringCloud超级入门》Spring Cloud Eureka是什么?《八》
Spring Cloud官方文档中文版-声明式Rest客户端:Feign