Feign-未完成

Feign

Java中如何实现接口调用?即如何发起http请求

前三种方式比较麻烦,在发起请求前,需要将Java对象进行序列化转为json格式的数据,才能发送,然后进行响应时,还需要把json数据进行反序列化成java对象。

而restTemplate可以自动进行序列化和反序列化,比较方便。

Feign是Netflix(停止维护了)开发的声明式、模板化的HTTP客户端,其灵感来自Retrofit、JAXRS-2.0以及
WebSocket。Feign可帮助我们更加便捷、优雅地调用HTTP API。
Spring Cloud openfeign对Feign进行了增强,使其支持Spring MVC注解,另外还整合了
Ribbon和Nacos,从而使得Feign的使用更加方便。以后讲openfeign,其实就是指Feign

Feign可以做到 使用 HTTP 请求远程服务时就像调用本地方法一样的体验 ,开发者完全感知不
到这是远程方法,更感知不到这是个 HTTP 请求。它像 Dubbo 一样,consumer 直接调用接
口方法调用 provider,而不需要通过常规的 Http Client 构造请求再解析返回数据。它解决了
让开发者调用远程接口就跟调用本地方法一样,无需关注与远程的交互细节,更无需关注分布
式环境开发


如何使用Feign?

每个变量的含义:

path的值和StockController上的@RequestMapping后的内容一模一样即可

方法的书写和Controller层中方法的书写也一模一样即可,但是不用写方法体,大括号也不需要

第四步:注入FeignService,直接调用另一个微服务提供的方法即可

Spring Cloud openfeign对Feign进行了增强,使其支持Spring MVC注解,
另外还整合了 Ribbon和Nacos,会自动的进行服务注册和发现,还可以进行基于Ribbon的负载均衡

注意:在springMVC中接口的定义不严格,如果路径变量只有一个参数,它可以自动和唯一的形参对应上,但是在定义FeignService接口的时候,它的要求很严格,必须加上后面的别名,一对一的指定哪个参数对哪个参数



日志配置

一般通过Feign去调用服务的时候,不会输出任何日志信息,这对于开发者想调试,修改bug来说很不方便

1. 全局配置:通过定义一个配置类

返回Feign日志类型的一个枚举,然后修改配置文件中springboot默认的日志级别

注意:加上@Configuration注解就会对所有的服务提供方都生效

springboot默认的日志级别是info,feign的日志级别是debug,比info级别低,所以在springboot的项目中不会输出,我们还需要调整springboot的日志级别,但是我们不想调整所有日志的输出级别,只调整springboot针对feign定义的所有接口的输出日志级别,下面加上了feign定义的所有接口的包路径

最后就可以输出了

2.局部配置有两种方式:

(1)局部配置,调用指定的微服务时才输出日志

先将注解去掉,然后再在@FeignClient 注解中指定使用的配置类

s

(2)通过配置文件指定对哪个服务生效,再指定日志级别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

#学习的路上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值