Spring Cloud alibaba之Feign
JAVA项目中如何实现接口调用?
Httpclient
Httpclient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持Http协议的客户端编程工具包,并且它支持HTTP协议最新版本和建议。HttpClient相比传统JDK自带的URL Connection,提升了易用性和灵活性,是客户端发送HTTP请求变得容易,提高了开发的效率。
Okhttp
一个处理网络请求的开源项目,是安卓端最火的轻量级框架,由Square公司贡献,用于代替HttpUrlConnection和Apache HttpClient。OkHttp拥有简洁的API、高校的性能,并支持多种协议(HTTP/2和SPDY)
HttpURLConnection
HttpURLConnection是Java的标准类,它继承自URLConnection,可用于向指定网站发送GET请求、POST请求。HttpURLConection使用比较复杂,不想HttpClient那样容易使用。
RestTemplate WbClient
RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程HTTP服务的方法,能够大大提高客户端的编写效率。
上面介绍的是最常见的几种调用接口的方法,我们下面介绍的方法比上面的更简单、方便,它就是Feign。
什么是Feign
Feign是Nexflix开发的声明式、模板化的HTTP客户端,其灵感来自Retrofit、JAXRS-2.0以及WebSocket。Feign可帮助我们更加便捷、优雅地调用HTTP API。
优势
Feign可以做到
![](https://img-blog.csdnimg.cn/img_convert/2562a6704b5e5cfefe57946acb7ff0b0.png)
开发者完全感知不到这是远程方法,更感知不到这是个HTTP请求。它像Dubbo一样,consumer直接调用接口方法调用provider,而不是要通过常规的HttpClient构造请求解析返回数据。它解决了让开发者调用远程接口就跟调用本地方法一样,无需关注与远程的交互细节,更无需关注分布式环境开发。(简单地说就是A服务的Service接口去调用别的B服务的Controller接口)
Spring Cloud Alibaba快速整合Opne Feign
复制order-nacos项目,修改项目名为order-openfeign,修改其它配置。引入依赖
![](https://img-blog.csdnimg.cn/img_convert/57de418bd4d285d289de3425badae475.png)
新建Feign接口
![](https://img-blog.csdnimg.cn/img_convert/c45df9e504cf7966f76000e7adcf7374.png)
编写订单Controller
![](https://img-blog.csdnimg.cn/img_convert/fff8fed8f8f73676b58565ec0419636d.png)
此时stockFeignService下面有一条红色的波浪线,需要在启动类中配置上开启Feign的注解
![](https://img-blog.csdnimg.cn/img_convert/b44b700faf7e360e362a0d053cb89017.png)
最终项目结构
![](https://img-blog.csdnimg.cn/img_convert/605a54036d147721fe183ba382a7b422.png)
访问订单接口
![](https://img-blog.csdnimg.cn/img_convert/9a1524e661e81f33b98dc302006cef5a.png)
日志配置
1.新建product-nacos子项目,controller
![](https://img-blog.csdnimg.cn/img_convert/c2034c142f49c38593fd5458da0ffcf4.png)
application.yml
![](https://img-blog.csdnimg.cn/img_convert/f10bcd2e2e823b2e0f3c59326a48b06d.png)
最终长这样
![](https://img-blog.csdnimg.cn/img_convert/e41be37428d138d6cd49db1f386f997f.png)
在上文中创建的order-openfeign项目中新建配置类
![](https://img-blog.csdnimg.cn/img_convert/bc365783fd540ef292c142f593ab41cb.png)
新建feign接口
![](https://img-blog.csdnimg.cn/img_convert/32877b13d06064d7476a7cdad6a10d06.png)
更新Controller
![](https://img-blog.csdnimg.cn/img_convert/1944f61ee56a079c09d5f56b0c65015e.png)
application.yml添加配置
![](https://img-blog.csdnimg.cn/img_convert/321f9bfbe9bca293ad74f3b5765e104f.png)
启动订单服务、库存服务和商品服务,访问订单接口
日志信息也打印到了控制台
![](https://img-blog.csdnimg.cn/img_convert/07650178d8825997fa27d423c15de68b.png)
契约配置
Spring Cloud在Feign的基础上做了扩展,使用Spring MVC的疏解来完成Feign的功能。原生的Feign是不支持Spring MVC注解的,如果你想在Spring Cloud中使用原生的注解方式来定义客户端也是可以的,通过配置契约来改变这个配置,Spring Cloud中默认的是SpringMvcContract。
Spring Cloud 1早期版本就是用的原生Feign,随着netflix的停更替换成了Open feign。
修改契约配置,支持Feign原生的注解
![](https://img-blog.csdnimg.cn/img_convert/67f00ae237c2f5f6b4b699d228eaf272.png)
$\color{#FF0000}{注意:修改契约配置后,stock-service不再支持springmvc的注解,需要使用Feign原生的注解}
OrderFeignService中配置使用Feign原生的注解
![](https://img-blog.csdnimg.cn/img_convert/e754518d76e38ec8e1f2f0421484be05.png)
补充:也可以通过yml方式配置契约
![](https://img-blog.csdnimg.cn/img_convert/29a13714eae816b8db04fb877efe90ed.png)
超时时间设置
通过 Options 可以配置连接超时时间和读取超时时间,Options 得第一个参数是连接的超时时间(ms),默认值是2s;第二个是请求处理的超时时间(ms),默认是5s。
全局配置
![](https://img-blog.csdnimg.cn/img_convert/e7860ca21d1403ca86efab1ef1926bc7.png)
yml中配置
![](https://img-blog.csdnimg.cn/img_convert/0846fb31d61075613e0888bbd9ca2945.png)
![](https://img-blog.csdnimg.cn/img_convert/a72555f70756a51fa2fd5de4511736ad.png)
![](https://img-blog.csdnimg.cn/img_convert/0527eab7be156e190a57ba3372b64bf9.png)
相关文章:
![](https://img-blog.csdnimg.cn/img_convert/0527eab7be156e190a57ba3372b64bf9.png)
Spring Cloud alibaba之Feign
JAVA项目中如何实现接口调用?HttpclientHttpclient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持Http协议的客户端编程工具包,并且它支持HTTP协议最新版本和建议。HttpClient相比传统JDK自带的URL Connection&a…...
![](https://img-blog.csdnimg.cn/img_convert/d7b2d466e2d871ea8bdde9ac6aa68429.png)
零信任-Google谷歌零信任介绍(3)
谷歌零信任的介绍? "Zero Trust" 是一种网络安全模型,旨在通过降低网络中的信任级别来防止安全威胁。在零信任模型中,不论请求来自内部网络还是外部网络,系统都将对所有请求进行详细的验证和审核。这意味着每次请求都需…...
![](https://img-blog.csdnimg.cn/a67666243ff043519f1bcd063a73e938.png)
Numpy基础——人工智能基础
文章目录一、Numpy概述1.优势2.numpy历史3.Numpy的核心:多维数组4.numpy基础4.1 ndarray数组4.2 内存中的ndarray对象一、Numpy概述 1.优势 Numpy(Nummerical Python),补充了Python语言所欠缺的数值计算能力;Numpy是其它数据分析及机器学习库的底层库&…...
![](https://img-blog.csdnimg.cn/img_convert/7aaee015e3d9706c6680f093d8c10d75.jpeg)
电商仓储与配送云仓是什么?
仓库是整个供给链的关键局部。它们是产品暂停和触摸的点,耗费空间和时间(工时)。空间和时间反过来也是费用。经过开发数学和计算机模型来微调仓库的规划和操作,经理能够显著降低与产品分销相关的劳动力本钱,进步仓库空间应用率,并…...
![](https://img-blog.csdnimg.cn/f177110b54384d4a9f2300f436f77f38.png)
【零基础入门前端系列】—HTML介绍(一)
【零基础入门前端系列】—HTML介绍(一) 一、什么是HTML HTML是用来描述网页的一种语言HTML指的是超文本标记语言:HyperText Markup LanguageHTML不是一种编程语言,而是一种超文本标记语言,标记语言是一套标记标签(ma…...
![](https://img-blog.csdnimg.cn/765ceaeaff394586a4a9f48a53b34833.gif#pic_center)
Elasticsearch索引库和文档的相关操作
前言:最近一直在复习Elasticsearch相关的知识,公司搜索相关的技术用到了这个,用公司电脑配了环境,借鉴网上的课程进行了总结。希望能够加深自己的印象以及帮助到其他的小伙伴儿们😉😉。 如果文章有什么需要…...
![](https://img-blog.csdnimg.cn/cfcf6a014a27407d80ee006fa2fc08d2.png)
使用Python,Opencv检测图像,视频中的猫
使用Python,Opencv检测图像,视频中的猫🐱 这篇博客将介绍如何使用Python,OpenCV库附带的默认Haar级联检测器来检测图像中的猫。同样的技术也可以应用于视频流。这些哈尔级联由约瑟夫豪斯(Joseph Howse)训练…...
![](https://www.ngui.cc/images/no-images.jpg)
浅谈域名和服务器集约化管理的误区
一个正常的网站通常由域名、网站程序、服务器三个部分组成,网站程序由单位开发设计,而域名和服务器则需要租用购买,那么域名和服务器之间的关系是什么?如何实现域名和服务器的有效管理呢? 服务器和域名的关系 服务器…...
![](https://img-blog.csdnimg.cn/img_convert/a40d5d69e4a845faac624761af9d6c41.png)
迪赛智慧数——柱状图(正负条形图):20212022人才求职最关注的因素
效果图从近两年职场跳槽方向看,相比此前人们对高薪大厂趋之若鹜,如今职场人更关注业务前景。根据相关数据显示,职场人求职最关注的因素中,“薪资福利”权重下降,“个人发展”权重上升,“业务前景”首次进入…...
![](https://www.ngui.cc/images/no-images.jpg)
网络安全-黑帽白帽红客与网络安全法
网络安全-黑帽白帽红客与网络安全法 本章内容较少,因为刚开端。 黑客来源于hacker 指的是信息安全里面,能够自由出入对方系统,指的是擅长IT技术的电脑高手 黑帽黑客-坏蛋,研究木马的,找漏洞的,攻击网络或者…...
![](https://www.ngui.cc/images/no-images.jpg)
Xpath元素定位之同级节点,父节点,子节点
XPath学习:轴(8)——following-siblingXPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 同时被构建于 XPath 表达之上。推荐一个挺不错的网站:htt…...
![](https://www.ngui.cc/images/no-images.jpg)
华为OD机试 - 挑选字符串(Python)| 真题+思路+代码
挑选字符串 题目 给定 a-z,26 个英文字母小写字符串组成的字符串 A 和 B, 其中 A 可能存在重复字母,B 不会存在重复字母, 现从字符串 A 中按规则挑选一些字母可以组成字符串 B 挑选规则如下: 同一个位置的字母只能挑选一次, 被挑选字母的相对先后顺序不能被改变, 求最…...
![](https://img-blog.csdnimg.cn/23baa62e7e27410d919897d1a7d28fb9.png)
python笔记-- “__del__”析构方法
-#### 1、基本概念(构造函数与析构函数) 特殊函数:由系统自动执行,在程序中不可显式地调用他们 构造函数: 建立对象时对对象的数据成员进行初始化(对象初始化) 析构函数: 对象生命期…...
![](https://img-blog.csdnimg.cn/img_convert/59e523ffbe58ee898a69ac2d8643afac.png)
支付系统核心架构设计思路(万能通用)
文章目录1. 支付系统总览核心系统交互业务图谱2. 核心系统解析交易核心交易核心基础交易类型抽象多表聚合 & 订单关联支付核心支付核心总览支付行为编排异常处理渠道网关资金核算3. 服务治理平台统一上下文数据一致性治理CAS校验幂等 & 异常补偿对账准实时对账DB拆分异…...
![](https://www.ngui.cc/images/no-images.jpg)
python实现mongdb的双活
如何用python实现mongdb的双活,两个数据库实时同步? 可以使用Pymongo库,它可以提供同步的API来实现MongoDB的双活,两个数据库实时同步。还可以使用MongoDB的复制集功能来进行实时同步。 Pymongo库提供什么同步的API来实现MongoD…...
![](https://img-blog.csdnimg.cn/04b4c33df61d4a808f456f42411cd94b.png)
LeetCode-110. 平衡二叉树
目录题目分析递归法题外话题目来源 110. 平衡二叉树 题目分析 平很二叉树:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 二叉树节点的深度和二叉树节点的高度 递归法 递归三步曲 1.明确递归函数的参数和返回值 参数:当前传入节点。 返回值…...
![](https://img-blog.csdnimg.cn/img_convert/370cf41d82124123b90c011f74baedc7.png)
Python蓝桥杯训练:基本数据结构 [链表]
Python蓝桥杯训练:基本数据结构 [链表] 文章目录Python蓝桥杯训练:基本数据结构 [链表]一、链表理论基础知识二、有关链表的一些常见操作三、力扣上面一些有关链表的题目练习1、[移除链表元素](https://leetcode.cn/problems/remove-linked-list-element…...
![](https://www.ngui.cc/images/no-images.jpg)
华为OD机试 - 找字符(Python)| 真题+思路+代码
找字符 题目 给定两个字符串, 从字符串2中找出字符串1中的所有字符, 去重并按照 ASCII 码值从小到大排列。 输入 字符范围满足 ASCII 编码要求, 输入字符串1长度不超过1024, 字符串2长度不超过100。 输出描述 按照 ASCII 由小到大排序 示例一 输入 bach bbaaccddf…...
![](https://img-blog.csdnimg.cn/22297cf2378d4a3b86c2c21b1d4da7ca.jpeg)
使用继承与派生的6大要点
概述 面向对象编程技术非常看重软件的可重用性,在C中,可重用性是通过继承机制来实现的。继承机制允许程序员在保持原有类的数据和功能的基础上进行扩展,增加新的数据和功能,从而构成一个新的类,也称为派生类。原有类&a…...
![](https://img-blog.csdnimg.cn/img_convert/cde9e1428e7e469382fb877d145c9d93.png)
加一-力扣66-java高效方案
一、题目描述给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入:di…...
![](https://img-blog.csdnimg.cn/img_convert/ab62e4e6941aef443961588bf5c61541.png)
记一次 .NET 某游戏网站 CPU爆高分析
一:背景 1. 讲故事 这段时间经常有朋友微信上问我这个真实案例分析连载怎么不往下续了,关注我的朋友应该知道,我近二个月在研究 SQLSERVER,也写了十多篇文章,为什么要研究这东西呢? 是因为在 dump 中发现…...
![](https://img-blog.csdnimg.cn/a036094c248746fd999b700a5db9e55c.png#pic_center)
集群使用——资源管理和租户创建
概述 OceanBase 数据库是多租户的分布式数据库,租户使用的资源建立在资源池上。资源池包含了资源单元,而资源单元则规定了具体资源的量化(如 CPU、Memory、Disk_Size 和 IOPS 等)。 创建租户前,必须规定租户使用的资源…...
![](https://img-blog.csdnimg.cn/f9fde0d159e44d3c97044dbe95076a4b.png)
谷歌浏览器登录失败,提示【无法同步到“...@gmail.com”】
首先安装Chrome同步助手(Chrome-Sync-Helper,看了很多博客,谷歌浏览器同步问题好像都要用这个),改成.rar,解压,文件夹_metadata重命名为metadata,然后添加到谷歌浏览器的扩展程序中。…...
![](https://www.ngui.cc/images/no-images.jpg)
75 111111
选择题(共75题,合计75.0分) 1. 选项ABCD中显示了所创造的商业价值以及在产品中实施各种功能需要进行的开发工作。团队应优先实施哪项功能? The business value created and the development effort needed to implement the various features in the product are sh…...
![](https://img-blog.csdnimg.cn/42c1c57c537e4d85a0f1ca766f6c065f.png)
分销系统逻辑
相关概念 主营商户: 提供分销商品和佣金的商户分销商: 拥有自己的销售渠道,能够帮助推动产品销售的个人或商户消费者: 购买分销商品的人。佣金: 主营商户返还给经销商的比例抽成 分销功能设计 (1)分销商准入规则设计 无规则: 没有分销商的准入门槛限制…...
![](https://img-blog.csdnimg.cn/0ddec82481af4e908a79185d7dc450d2.png)
MySQL视图特性
文章目录MySQL视图特性基本使用准备测试表创建视图修改视图影响基表修改基表影响视图删除视图视图规则和限制MySQL视图特性 视图的概念 视图是一个虚拟表,其内容由查询定义,同真实的表一样,视图包含一系列带有名称的列和行数据。视图中的数据…...
![](https://img-blog.csdnimg.cn/92943247441d4432b91221b0dc85fe62.png)
RabbitMQ详解(二):Docker安装RabbitMQ
在Docker上安装部署RabbitMQ方便快捷,不需要额外安装Erlang环境,所以写该篇文章先来介绍如何在Docker上部署RabbitMQ。 一、安装并运行 (1)、在docker hub 中查找rabbitmq镜像 docker search rabbitmq:3.9.12-management带有“mangement”的版本&…...
![](https://www.ngui.cc/images/no-images.jpg)
如何使用代码注释:关于JavaScript与TypeScript 注释和文档的自动生成
如何使用代码注释:关于JavaScript与TypeScript 注释和文档的自动生成jcLee95:https://blog.csdn.net/qq_28550263?spm1001.2101.3001.5343 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/detail…...
![](https://img-blog.csdnimg.cn/0310e91421944201a3629b2ca8e5d56a.png#pic_center)
Echarts 设置面积区域图(areaStyle核心)
第011个点击查看专栏目录Echarts折线区域面积图的视觉效果更加饱满丰富,在系列不多的场景下尤其适用。区域面积图将折线到坐标轴的空间设置背景色,用区域面积表达数据。通过 areaStyle 设置折线图的填充区域样式,将其设为为 {} 表示使用默认…...
![](https://img-blog.csdnimg.cn/6293410cc66c4d3996f51b2471bab03a.png)
pandas——字符串处理【建议收藏】
pandas——字符串处理 作者:AOAIYI 创作不易,如果觉得文章不错或能帮助到你学习,记得点赞收藏评论一下哦 文章目录pandas——字符串处理一、实验目的二、实验原理三、实验环境四、实验内容五、实验步骤1.cat() 拼接字符串2.split()切片字符串…...
![](/images/no-images.jpg)
企业网站管理系统程序名称/竞价排名规则
简单的并行加速计算(python) backend:用于设置并行方式, 多进程方式有’loky’(更稳定)和’multiprocessing’两种可选项, 多线程方式有’threading’一种选项。默认为’loky’ n_jobs&#x…...
![](https://images2015.cnblogs.com/blog/931964/201703/931964-20170314161836838-850649467.png)
南阳做网站哪家好/上海网站排名优化公司
1.什么是Hive Hive 是建立在 Hadoop上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Hive 定义了简单的类SQL查询语言࿰…...
![](/images/no-images.jpg)
新冠走了几百万老年人/杭州seo排名公司
Java,模仿练习,输出三行信息问题描述模仿练习,编写程序,输出三行信息Write the program to display threemessages.要求:请不要复制参考代码,在开发工具上手工录入代码,运行正确后,在OJ上提交代码;参考代码…...
![](https://images.cnblogs.com/cnblogs_com/vwxyzh/201111/201111061231278191.png)
建设集团网站方案设计/在线推广
看Outlook的截图: 系统的报警邮件要是发成这样,只能在邮箱里面设置规则,直接永久删除了。。。 转载于:https://www.cnblogs.com/vwxyzh/archive/2011/11/06/2238023.html...
![](https://static.oschina.net/uploads/space/2016/1223/122823_msYQ_3152390.png)
wordpress颜色/如何注册一个域名
2019独角兽企业重金招聘Python工程师标准>>> MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过。但在实际的生产环境中,由单台Mysql作为独立的…...
![](https://img-blog.csdnimg.cn/img_convert/56d167abc63f35c24b45fe8ff3f7af20.png)
网站后台密码忘了/网站页面的优化
IT行业为啥这么吸引人?说白了就是高薪,容易进大厂。在一线城市的Java岗位,单拿应届生薪资水平来说,普遍在10k以上,最高也能达到30k以上,且涨薪幅度大,经常有程序员说自己的年薪达到50wÿ…...