springcloud学习笔记

springcloud学习笔记

今天学习了springcloud中feign组件。

Feign 是一个声明式的Web Service客户端 。他的出现使开发Web Service客户端变得很简单。使用Feign只需要创建一个接口加上对应的注解,可以像Spring Web一样使用HttpMessageConverters等。
Feign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用Feign,可以做到使用HTTP请求 访问远程服务,就像调用本地方法一样的,开发者完全感知不到这是在调用远程方法,更感知不到在访问HTTP请求。
Feign也有一些特性:
可插拔的注解支持,包括Feign注释和JAX-RS注解。
支持可插拔的HTTP编码器和解码器。
支持Hystrix和它的Fallback。
支持HTTP请求和响应的亚索。Feign是一个声明式的Web Service客户端,他的目的就是让Web Service调用更加简单。它整合了Ribbon和Hystrix,从而不需要开发者针对Feign进行整合。Feign还提供了Http请求的模板,通过编写简单的接口和注解,就可以定义好HTTP请求的参数、格式、地址等信息。Feign会完全代理HTTP的请求,在使用过程中我们只需要依赖注入Bean,然后调用对应的方法传递参数即可。


**Feign的工作原理**:
在开发微服务应用时,我们会在主程序入口	添		加@EnableFeignClients注解
开启对Feign Client扫描加载处理。根据Feign Client的开发规范,定义接口并加@FeignClient注解

当程序启动时,会进行包扫描,扫描所有的@FeignClient注解的类,并将这些信息注入SpringIOC容器中。当定义的Feign
接口中的方法被调用时,通过JDK的代理的方式,来生成具体的RequestTemplate.当生成代理时,Feign会为每一个接口方法
创建一个RequestTemplate,该对象封装了HTTP请求需要的全部信息,如请求参数名,请求方法等信息都是在这个过程中确定的

然后由RequestTemplate生成Request,然后把Request交给Client去处理,这里指的Clien可以是JDK原生的URLConnection,
Apache的Http Client,也可以是OKHttp.最后Client被封装到LoadBalanceClient类,这个类结合Ribbon负载均衡发起服务
之间的调用。

下面开始具体使用,具体案例不再做表示。

在spring.application.name=eureka-client
这里配置的是虚拟主机名称,这个就相当于我们的localahost。需要注意名称相符。

使用feign进行接口调用,如果需要传递参数,并且请求方式是GET,则需要加注解@RequestParam

使用feign进行接口调用,如果需要多个传递参数,并且请求方式是GET,则需要加注解@RequestParam

@RequestMapping(value = "/user/test3",method = RequestMethod.GET)
public Order test3(@RequestParam(name = 	"orderSn") String orderSn);


@RequestMapping(value = "/user/test2",method = RequestMethod.GET)
public Order test2(@RequestParam(name = 	"id")Integer id,@RequestParam(name = 	"orderSn")String orderSn);’

如果用@RequestBody 来传递对象参数的话,只能有一个。

这里要注意,如果我们使用post提交请求方式,需添加注解,将格式转化为json,否则会出现错误。
在这里插入图片描述

如果使用get提交请求方式,则需要注意,get只允许一个参数,如果想使用更多参数,需要添加@RequestParam注解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值