Feign的介绍

Feign是springcloud里面的一个功能组件,那么它是实现一个什么功能呢?

首先我们可以先从字面意思上去理解一下它,Feign,英文翻译过来就是伪装的意思,实际上它的功能也是和伪装相关的,在我们之前在客户端配置的时候,不知道大家还记不记得我们是用RestTemplate去配置的,但是配置这个RestTemplate的时候,我们是调用了它里面的一个方法,并且把url,id还有class传进去的,但是这样做是不是太麻烦了,而且还会暴露地址,所以我们就可以使用Feign这个功能来帮助我们,Feign是可以对我们的RestTemplate里面的url地址进行伪装,

那我们该如何配置这个Feign呢?

首先老样子,我们在配置springcloud任何一个组件的时候,不要忘了三个步骤:
1.配置启动器
2.覆盖配置
3.添加到引导类

这三个步骤是无论你在springcloud里面配置哪个配置都是需要这三个步骤的

首先我们需要在客户端配置上下面的依赖:
在这里插入图片描述

为什么要在客户端配置呢,因为RestTemplate在客户端进行配置的,我们的目的是隐藏RestTemplate的配置并且隐藏其url地址。

配置完启动类,我们就可以来看看第二步了,添加配置,可是配置Feign并不需要在yml里面添加一些配置,所以第二步我们可以直接省略了

然后我们来看看第三步,也就是在引导类中加上配置

在这里插入图片描述
这里有两点需要注意的地方,第一点就是在引导类最外层方法中添加注解@EnableFeignClients,这个注解的作用就是启动Feign客户端组件的意思,也就是配置上后,就可以启动Feign,而且在Fegin这个注解里面,包含了RestTemplate方法,因此在下面红框圈住的RestTemplate方法我们也不需要配置了,它会自动生成的。

因此,在controller里面封装的RestTemplate方法也是不需要了,可以去掉了
在这里插入图片描述
然而,相当于全部方法都要注释掉
在这里插入图片描述
在这里插入图片描述
这些全部都可以注释掉了,为什么要把这些注释掉呢,等会我们再来说说

我们需要另外添加一个接口,是Feign的接口,这个接口可以随时被调用,我们建立了这个接口后,还需要打上注解
在这里插入图片描述
注解里面的括号写的是服务端的微服务id,也就是他们的程序名,为什么要写这个呢,因为Feign的功能就是取代RestTemplate的功能的,所以Feign可以通过这种方式去获取服务端的地址信息之类的一切信息,那我们应该在Feign的这个接口里面调用什么方法呢?

我们应该调用服务端的controller的方法:
在这里插入图片描述
但是我们调用的话又不能直接整个复制过去,因为我们的Feign是一个接口类,接口类是不可以写方法的,只能写方法名和传入参数,因此我们只能这么写
在这里插入图片描述
要注意的是,服务端那边不是有个RequestMapping的全局方法路径吗,也就是服务端的controller方法的最外层有个RequestMapping的全局路径地址,我们也需要在Feign的方法里面写上这个地址,但是我们不可以在Feign的这个接口的最外层方法上加上RequestMapping的注解,因为这个毕竟是个接口又不是controller,所以我们只能在它里面的方法上加上GetMapping然后把传入地址user和占位符{id}用斜号隔开

这里还是注意上面的细节,就是这个接口里面的方法是没有执行方法的。

最后,我们把它注入进来客户端的controller里面就可以使用了

在这里插入图片描述
你在外面写好的方法,最终还是要加回到controller这里来,因为客户端在网页上输入的网址是直接访问到你的controller的,只要你把相关方法都写到controller里面去,客户一通过网页去访问你的RequestMapping地址,就可以实现你的方法了,所以你的方法一定要放在controller里面去。

因此,下面我们的方法是可以写了

在这里插入图片描述

这里是我们客户端的controller方法,我们可以直接返回this.userClient里面写好的方法,也就是我们刚刚写好的方法,并且传入id,但是为什么最后我们要写一个toString方法,因为我们的UserClient接口类里面的那个queryUserById方法的返回值类型是User,然后这个客户端里面的controller方法也就上图的这个方法返回值是String,如果想要完成返回值,我们要把这个return的方法值改成toString的,这样就可以顺利被返回了。

重启一下客户端,并且访问后,我们可以得到这个

在这里插入图片描述
访问成功

然后我们来说一下上面说到了为什么要把Ribbon这个注释去掉的问题是吧?(Ribbon的注释就是LoadBalenced)因为我们的Feign的包里面就包含了Ribbon的包
在这里插入图片描述

但是为什么是灰色的呢,因为我们在eureka的包里面是已经有包含了ribbon的包,两个包造成了重复,所以显示是灰色的。

然后上面还有我们把Hystrix也注释掉了,是因为Feign对Hystrix也集成了,在包里面有引入,但是需要注意的一点就是,Feign引入Hystrix后默认是不会自动熔断的,需要你去开启它才会自动去熔断,这就需要你自己去yml文件里面去配置。
在这里插入图片描述
在这里插入图片描述
我们开启熔断方法,不仅仅是导入包和在yml文件中配置,而且还有个关键步骤要去做,就是指定一个熔断类方法并且告诉这个方法哪些方法需要熔断,因此我们就要进行配置这个方法:

在这里插入图片描述
因此,我们要在同样的包里面建立一个实现类,然后点击实现它的方法,但是为什么我们的返回值要是User呢,因为接口里面的方法返回值就是User,之前我们也说过,你要熔断的方法的返回值是什么,我们就需要和它一样,所以我们可以new一个User对象(方便返回),然后通过setUserName把服务降级的语句传进去,再返回出来

我们写完了这个实现类后,是不是需要告诉那个接口我们这个实现类方法是一个熔断方法,让他们两个方法之间产生联系呀,所以,我们需要在接口方法那里配置上注解,让它知道这个是个熔断方法
在这里插入图片描述
又回过头来看看这个实现类方法,是不是没有注入Spring容器里面呀,如果没有注入到容器里面的话,你这个方法还是用不了的,所以需要加上这个注解
在这里插入图片描述
制造一个异常,然后运行

在这里插入图片描述
服务降级成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/251661.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

@FeignClient使用详解

FeignClient标签的常用属性如下: name:指定FeignClient的名称,如果项目使用了Ribbon,name属性会作为微服务的名称,用于服务发现url: url一般用于调试,可以手动指定FeignClient调用的地址decode404:当发生h…

Feign详解

一. Feign概述 Feign是Spring Cloud提供的声明式、模板化的HTTP客户端, 它使得调用远程服务就像调用本地服务一样简单,只需要创建一个接口并添加一个注解即可。 Spring Cloud集成Feign并对其进行了增强,使Feign支持了Spring MVC注解&#x…

Feign(简介和使用)

1. Feign介绍 通过RestTemplate调用其它服务的API时,所需要的参数须在请求的URL中进行拼接,如果参数少的话或许我们还可以忍受,一旦有多个参数的话,这时拼接请求字符串就会效率低下 Feign是一个声明式的Web Service客户端&#…

什么是Feign?

服务间调用介绍 现有的服务调用方式 利用拼接的方式。 虽然上面有的用不错就很好了 Feign解决了什么问题 Feign的调用方式 Feign体系架构解析-武装到牙齿 上一节我们了解了feign的主要功能,它就像一个自拍杆一样,方便了Eureka的远程调用。可是怎么看…

简单理解Feign的原理与使用

文章目录 SpringCloud 总架构图一、简介1.1、负载均衡的概念2.2、Feign概念 二、入门案例2.1、导入依赖2.2、Feign的客户端2.3、调用Feign2.4、开启Feign功能2.5、启动测试2.6、Feign实现原理简单分析 三、负载均衡(Ribbon)四、熔断器支持五、请求压缩和响应压缩六、配置日志级…

Feign基本使用(超详细)

目录 一、Feign概述 二、Feign入门 1.创建服务提供者(provider) 2.创建feign接口 3、创建服务消费者(consumer) 三、Feign 原理 四、Feign优化 1、开启feign日志 2、feign超时问题 3、http连接池 4、gzip压缩 前言 当我们通过RestTemplate调用其它服务的API时,所…

中外黑客两则

外国一则:丹尼斯麦卡利斯泰尔里奇。挑选他的原因:帅。 (英语:Dennis MacAlistair Ritchie;1941年9月9日-2011年10月12日[3][4]),著名的美国计算机科学家,对C语言和其他编…

git使用X篇_2_Git全套教程IDEA版(git、GitHub、Gitee码云、搭建公司内部GitLab、与IDEA集成等内容)

本文是根据以下视频及网上总结进行更新后的介绍git使用的博文。包含了git、GitHub、Gitee码云、搭建公司内部GitLab、与IDEA集成等内容。 笔记来源:【尚硅谷】5h打通Git全套教程IDEA版(涵盖GitHub\Gitee码云\GitLab) 文章目录 初识 Git0、内容…

Axure原型模板、元件库、组件库

在产品设计中,随时会使用到相似场景,每次都反复绘制耗时耗力。 若使用通用模板即可快速提高设计效率。 下面给大家提供一个登录多种验证系统框架模板,可快速修改使用。 预览链接: Axure高保真原型设计、Axure元件库、产品交互…

AXURE9最全的WEB设计元件库(分享版).rplib

Axure9常用到的WEB设计元件库,在Axure点击号即可导入元件库使用,或者打开Axure R9安装目录,进入DefaultSettings\Libraries,复制资源到此目录并重启Axure软件即可看到。 文件:590m.com/f/25127180-481124286-469239 &…

Axure移动端通用元件库rplib格式包含安卓、苹果各种主流手机、平板线框图元件库、IOS系统图标、人物图标、导航和分页、表格元素、各种小图标、移动元件库、axure元件库、axure原型

Axure移动端通用元件库rplib格式包含安卓、苹果各种主流手机、平板线框图元件库、IOS系统图标、人物图标、导航和分页、表格元素、各种小图标等 移动端通用元件库、app通用元件库、数据展示、操作反馈、通用模板、数据录入、列表页、表单页、详情页、通用版布局、移动端手机模…

Axure导入元件库和使用

下载元件库 vant 元件库下载: Vant - Mobile UI Components built on Vue element UI 元件库下载:https://element.eleme.cn/#/zh-CN/resource 以vant示例,下载完成后解压 我们看到有.rp和.rplib格式的文件 rp文件可以理解为一个别人设计好的原型作品。 rplib是原…

【Axure9.0原型实战(一)】Axure9.0的元件库的使用、导入、制作、路径等操作方法与技巧(附Axure元件库大全)

Axure9.0的元件库 文章目录 Axure9.0的元件库Axure9.0的元件库大全1.windows系统加载元件库2.MAC系统加载元件库3.新加入一些元件库4.自己建立元件库 Axure9.0的元件库大全 链接:https://pan.baidu.com/s/18VWM9R1qgFAXXz8Xooq4-A 提取码:u2gx 1.windo…

Axure RP9 的元件库

Axure的元件库 1.加载元件库 可以通过导入一些现有的元件库,来提高绘制的效率及美观性。 (1)windows系统: 将准备好的元件库复制到Axure 根目录下-【DefaultSettings】-【Libraries】中;移动成功后,重启…

嵌入式linux音乐电子相册制作软件,ApowerShow – 超级轻便的在线照片音乐视频制作软件...

有没有什么好用的照片视频制作软件呢?我大概对比了一下国内的其他软件,发现转场效果很多,但是需要自己去添加。它们的界面感觉有点繁琐,不是那么简洁。 其实除了使用国内的照片视频制作软件,你还可以使用ApowerShow。它…

html立体音乐相册源码,印记工坊立体音乐相册 v 1.8 官方版|印记工坊立体音乐相册官方版|印记工坊立体音乐相册电脑版_最火软件站...

印记工坊立体音乐相册包含多种多样的模板可以供用户使用,制作多种样式的电子相册,是一款傻瓜式视频音乐相册制作工具,及时是毫无制作经验的用户也能创作出精美的相册。最火软件站提供下载。 软件特色 故事视频制作 MV展示视频相册 时间轴视频制作 时光轴…

html动感音乐相册,动感音乐相册

动感音乐相册app是一款超级好用的音乐相册软件,这款软件上的功能丰富,能够帮助用户进行照片编辑,制作幻灯片等等,还能在线选择背景音乐进行添加,让相册每次打开都有不一样的感觉,喜欢的朋友快来下载吧。 动…

视频删了怎么恢复

视频无处不在,记录着各种有意义的画面,那么一旦重要的视频文件删除了该怎么恢复呢?甲驭科技数据恢复小编教您如何操作恢复。 目前视频的录制主要是各种相机摄像机录制或者手机录制的,这里以相机摄像机录制视频恢复为例,讲述如何快…

大疆无人机视频恢复成功

随着大疆的用户越来越多,大疆在拍摄过程中也使用的越来越多,经常会有客户格式化或许其他误操作导致拍摄的数据丢失情况。希贝软件目前提供全系列大疆恢复方案,因为大疆无人机的碎片多样化,导致目前没有软件能够支持所有型号大疆录…

手机删除的视频怎么恢复?即刻扫描,快速恢复

手机里的照片跟视频一样,都存在于相册中,所以恢复的方法也异曲同工,不过视频所占用的内存比照片大很多,所以很多时候,拍的视频发送出去之后就会删掉,那么手机删除的视频怎么恢复?小编给大家推荐…