Spring Cloud alibaba之Feign

news2024/9/21 14:50:40

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可以做到

开发者完全感知不到这是远程方法,更感知不到这是个HTTP请求。它像Dubbo一样,consumer直接调用接口方法调用provider,而不是要通过常规的HttpClient构造请求解析返回数据。它解决了让开发者调用远程接口就跟调用本地方法一样,无需关注与远程的交互细节,更无需关注分布式环境开发。(简单地说就是A服务的Service接口去调用别的B服务的Controller接口)

Spring Cloud Alibaba快速整合Opne Feign

复制​​order-nacos​​项目,修改项目名为​​order-openfeign​​,修改其它配置。引入依赖

新建Feign接口

编写订单Controller

此时​​stockFeignService​​下面有一条红色的波浪线,需要在启动类中配置上开启Feign的注解

最终项目结构

访问订单接口

日志配置

1.新建​​product-nacos​​子项目,controller

application.yml

最终长这样

在上文中创建的​​order-openfeign​​项目中新建配置类

新建feign接口

更新Controller

application.yml添加配置

启动订单服务、库存服务和商品服务,访问订单接口

日志信息也打印到了控制台

契约配置

  Spring Cloud在Feign的基础上做了扩展,使用Spring MVC的疏解来完成Feign的功能。原生的Feign是不支持Spring MVC注解的,如果你想在Spring Cloud中使用原生的注解方式来定义客户端也是可以的,通过配置契约来改变这个配置,Spring Cloud中默认的是SpringMvcContract。

  Spring Cloud 1早期版本就是用的原生Feign,随着netflix的停更替换成了Open feign。

修改契约配置,支持Feign原生的注解

$\color{#FF0000}{注意:修改契约配置后,stock-service不再支持springmvc的注解,需要使用Feign原生的注解}

OrderFeignService中配置使用Feign原生的注解

补充:也可以通过yml方式配置契约

超时时间设置

通过 Options 可以配置连接超时时间和读取超时时间,Options 得第一个参数是连接的超时时间(ms),默认值是2s;第二个是请求处理的超时时间(ms),默认是5s。

全局配置

yml中配置

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

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

相关文章

Java对象内存布局及对象头详解

对象在堆内存中布局 平常我们都在使用对象,现在从底层角度来分析下java对象的内存布局,以及对象布局各部分含义。 周志明老师JVM第三版的定义: 在HotSpot虚拟机里,对象在堆内存中的存储布局可以划分为三个部分:对象头&#xff…

积跬步至千里 || 利用 os.walk 函数读取不同文件夹里的数据

利用 os.walk 函数读取不同文件夹里的数据 在很多情况下,我们需要读取某个文件夹中不同子文件夹里的各种数据文件. 此时, 我们可以利用 os.walk() 进行迭代执行. os.walk() 返回一个迭代器, 包括根目录(roots)、子目录(dirs)和文件(files)三个内容: roots 就是所有文件夹名作…

2023 最新版网络安全保姆级指南,从0到1,建议收藏!

一、网络安全学习的误区 1.不要试图以编程为基础去学习网络安全 不要以编程为基础再开始学习网络安全,一般来说,学习编程不但学习周期长,且过渡到网络安全用到编程的用到的编程的关键点不多。一般人如果想要把编程学好再开始学习网络安全往…

迪赛智慧数——柱状图(正负条形图):20212022人才求职最关注的因素

效果图从近两年职场跳槽方向看,相比此前人们对高薪大厂趋之若鹜,如今职场人更关注业务前景。根据相关数据显示,职场人求职最关注的因素中,“薪资福利”权重下降,“个人发展”权重上升,“业务前景”首次进入…

iPhone怎么找回被误删除的短信?三种方法教给你

iPhone怎么找回被误删除的短信?要知道,在苹果手机里,短信不像照片一样拥有“最近删除”的回收站,换句话说,删除短信后,你若是后悔了,就不能通过“最近删除”进行找回。不过别着急,请…

LeetCode-110. 平衡二叉树

目录题目分析递归法题外话题目来源 110. 平衡二叉树 题目分析 平很二叉树:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 二叉树节点的深度和二叉树节点的高度 递归法 递归三步曲 1.明确递归函数的参数和返回值 参数:当前传入节点。 返回值…

【C++设计模式】学习笔记(5):Decorator 装饰模式

目录 简介动机(Motivation)模式定义结构(Structure)要点总结笔记结语简介 Hello! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~ ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计算机专业,获得过国家奖学金…

2023年1月语音合成(TTS)和语音识别(ASR)论文月报

论文统计每月更新一次,主要跟踪语音合成和语音识别的发展状况(很多文章都是在会议后才发出,但不影响统计。统计过程难免存在疏漏,因此统计结果仅供参考。所有文章语音合成领域统计列表请访问http://yqli.tech/page/tts_paper.html&#xff0c…

肝一波,体验人工智能对话

一、肝一波,体验真爽 废话不多少,小码哥直接提大家感兴趣的问题,截图分享给大家。 问题一:如何在一年内赚到100万元 答: 一、赚钱的方式 开公司:在一年内开拓新业务模式,寻求投资&#xff…

Vue学习笔记3

Vue学习笔记31.1 指针1.2 指令补充&nextTick2.1 Vue-cli2.1.1 Vue-cli创建项目2.1.2 启动流程&入口文件2.1.3 eslint修复2.1.4 单文件组件-注册2.1.5 单文件组件-通信2.1.6 单文件组件-生命周期2.1.7单文件组件-指令与过滤器2.1.8 反向代理&别名反向代理需要在vue.…

二叉树进阶--二叉搜索树

目录 1.二叉搜索树 1.1 二叉搜索树概念 1.2 二叉搜索树操作 1.3 二叉搜索树的实现 1.4 二叉搜索树的应用 1.5 二叉搜索树的性能分析 2.二叉树进阶经典题: 1.二叉搜索树 1.1 二叉搜索树概念 二叉搜索树又称二叉排序树,它或者是一棵空树,…

144. 二叉树的前序遍历

144. 二叉树的前序遍历 Java代码&#xff1a;递归 public List<Integer> preorderTraversal(TreeNode root) {List<Integer> res new ArrayList<>();preOrder(root, res);return res; } private void preOrder(TreeNode root, List<Integer> res) {i…

【沐风老师】3DMAX几何投影插件Geometry Projection使用详解

【几何投影插件】 描述 3DMAX几何投影插件Geometry Projection&#xff0c;将一个或多个对象或它的顶点选择沿全局或局部 x、y 或 z 轴投影到另一个对象上。 适用版本 3dMax2013或更高版本 安装设置 插件的安装非常简单&#xff0c;解压后把插件脚本 “geometry_projectio…

SmartSoftHelp 数据库优化辅助软件

SmartSoftHelp 数据库高并发优化&#xff0c;数据库连接字符串优化&#xff0c;SQL耗时优化&#xff0c;SQL格式化&#xff0c;美化&#xff1f; 这些问题你都知道&#xff1f; 这不仅仅是一个软件&#xff0c;而是很多种解决方案&#xff01; 支持Netframework ,netcore后台…

移动设备安全管理基础指南

什么是移动安全管理 &#xff08;MSM&#xff09; 移动安全管理是指为保护企业中的移动设备和企业数据而采取的行动。这些操作可以进一步被归类为反应性的或主动的&#xff0c;基于该操作是在数据和设备被破坏之前还是之后执行的。除了管理移动设备外&#xff0c;大多数MDM解决…

验收测试分类

α测试 Alpha 是内测版本&#xff0c;即现在所说的CB。 此版本表示该软件仅仅是一个初步完成品, 通常只在软件开发者内部交流, 也有很少一部分发布给专业测试人员。 一般而言, 该版本软件的bug 较多, 普通用户最好不要安装。 β测试 Beta是公测版本&#xff0c;是对所有用户…

【算法】高精度

作者&#xff1a;指针不指南吗 专栏&#xff1a;算法篇 &#x1f43e;不能只会思路&#xff0c;必须落实到代码上&#x1f43e; 文章目录前言一、高精度加法二、高精度减法三、高精度乘法四、高精度除法前言 ​ 高精度即很大很大的数&#xff0c;超过了 long long 的范围&…

html标签手册

完整的HTML页面&#x1f4d1; ①基础标签&#x1f4d1;&#x1f4d1;&#x1f4d1; HTML <!DOCTYPE> 声明 !DOCTYPE声明必须是 HTML 文档的第一行&#xff0c;位于 html标签之前。 !DOCTYPE 声明不是 HTML 标签&#xff1b;它是指示 web 浏览器关于页面使用哪个 HTML 版…

硬件设计 之 CAN通信-DSView逻辑分析仪使用-CAN波形测试

CAN总线讲解 1.基本概念&#xff1a; **CAN&#xff0c;Controller Area Network&#xff0c;控制器局域网是用于解决汽车众多控制部件之间的数据交换而开发的一种串行数据通信总线。 ** 2.CAN总线电平&#xff1a; can总线采用差分电压传输数据&#xff0c;分别是CANH和CA…

QCon演讲实录(上):多云环境下应用管理与交付实践

作者&#xff1a;阿里云大数据基础工程技术团队——郭耀星 大家上午好&#xff01;我是来自阿里云大数据基础工程技术团队的郭耀星&#xff0c;花名雪尧。今天我很高兴能够来到QCon&#xff0c;与大家分享我的经验和心得。在当前的多云环境中&#xff0c;作为运维支撑团队&…