基于Feign的远程调用

目录

前言

RestTemplate方式调用存在的问题

存在的问题

Feign

Feign介绍

Feign的使用步骤

引入依赖

添加注解

编写Feign客户端

使用客户端(修改orderService)

原代码

修改后

总结


前言

RestTemplate方式调用存在的问题

以前利用RestTemplate发起远程调用的代码

String url = "http://userservice/user/" + order.getUserId();
User user = restTemplate.getForObject(url, User.class);

存在的问题

  • 代码可读性差,编程体验不统一
  • 参数复杂URL难以维护

Feign

Feign介绍

Feign是一个声明式的http客户端,官方地址:https://github.com/OpenFeign/feign
其作用就是帮助我们优雅的实现http请求的发送,解决上面提到的问题。

Feign的使用步骤

引入依赖

order-service中引入依赖

<!--        feign客户端依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>

添加注解

在order-service的启动类添加注解开启Feign的功能

····
@EnableFeignClients
····
public class OrderApplication {public static void main(String[] args) {SpringApplication.run(OrderApplication.class, args);}·····
}

编写Feign客户端

@FeignClient("userservice")
public interface UserClient {@GetMapping("/user/{id}")User findById(@PathVariable Long id);
}

使用客户端(修改orderService)

原代码
    @Autowiredprivate RestTemplate restTemplate;public Order queryOrderById(Long orderId) {// 查询订单Order order = orderMapper.findById(orderId);String url = "http://userservice/user/" + order.getUserId();User user = restTemplate.getForObject(url, User.class);order.setUser(user);// 返回return order;}
修改后
    @Autowiredprivate UserClient userClient;public Order queryOrderById(Long orderId) {// 1.查询订单Order order = orderMapper.findById(orderId);User user = userClient.findById(order.getUserId());order.setUser(user);// 4.返回return order;}

Feign主要是基于SpringMVC的注解来声明远程调用的信息,比如:

  • 服务名称:userservice
  • 请求方式:GET
  • 请求路径:/user/{id}
  • 请求参数:Long id
  • 返回值类型:User

总结

  • Feign的使用步骤
    • 引入依赖
    • 添加@EnableFeignClients注解
    • 编写FeignClient接口
    • 使用FeignClient中定义的方法代替RestTemplate

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

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

相关文章

【Unity 100个实用小技巧】 UI分辨率适配

UI分辨率适配 学习实际项目中&#xff0c;分辨率适配的方案&#xff0c;基础版本。 以下适配以720*1680为基准适配 具体操作 Canvas Scaler的Screen Match Model 设置为Match Width Or Height&#xff0c;Match设置为0 这个设置&#xff0c;是以宽为基准进行分辨率适配 其实在…

uniapp__微信小程序使用秋云ucharts折线图双轴

1、子组件 <template><view class"charts-box"><qiun-data-charts type"line":opts"computedOpts":chartData"chartData"/></view> </template><script> export default {props: {chartData: {t…

【优选算法】(第三十五篇)

目录 验证栈序列&#xff08;medium&#xff09; 题目解析 讲解算法原理 编写代码 N叉树的层序遍历&#xff08;medium&#xff09; 题目解析 讲解算法原理 编写代码 验证栈序列&#xff08;medium&#xff09; 题目解析 1.题目链接&#xff1a;. - 力扣&#xff08;L…

只需5步,就可以使用大语言模型(LLM)打造高效的应用

01 概述 随着人工智能技术的飞速发展&#xff0c;大型语言模型&#xff08;LLM&#xff09;正逐渐成为各个领域的得力助手。从最初的文本理解、生成到翻译&#xff0c;这些模型在自然语言处理&#xff08;NLP&#xff09;中的出色表现&#xff0c;让它们在聊天机器人、虚拟助…

98. UE5 GAS RPG 实现技能眩晕效果

我们在技能伤害基类上面设置了对应的负面效果应用的配置项&#xff0c;用来实现技能的负面效果应用。 在之前实现火球术的负面效果时&#xff0c;我们我们在创建火球时&#xff0c;通过伤害基类上的创建技能配置用于后续应用。 在火球攻击到敌人时&#xff0c;通过函数库书写…

68 Netty

68 Netty 参考资料 【硬核】肝了一月的Netty知识点 概念 Netty 是一个高性能、异步事件驱动的网络应用框架&#xff0c;简化了 Java 网络编程&#xff0c;适用于构建高效、可扩展的网络服务器和客户端。 Netty 是基于 Java NIO 的异步事件驱动的网络应用框架&#xff0c;使…

Premiere半色调动漫风格视频叠加特效素材MOGRT

Premiere Pro 半色调叠加素材视频模板&#xff0c;使用这个半色调效果轻松设置视频或图像的样式。可以使用自定义选项&#xff0c;让工作流程更加高效。 特征&#xff1a; 15个半色调叠加效果。 Adobe Premiere Pro 2023 4K分辨率&#xff08;38402160&#xff09;。 包括视频…

回溯法与迭代法详解:如何从手机数字键盘生成字母组合

在这篇文章中&#xff0c;我们将详细介绍如何基于手机数字键盘的映射&#xff0c;给定一个仅包含数字 2-9 的字符串&#xff0c;输出它能够表示的所有字母组合。这是一个经典的回溯算法问题&#xff0c;适合初学者理解和掌握。 问题描述 给定一个数字字符串&#xff0c;比如 …

TikTok流量不好是为什么?是网络没选对吗?

很多人发现他们的TikTok视频观看量不高&#xff0c;点赞和分享率也低&#xff0c;就会开始怀疑是不是网络选择不当导致了这一问题。虽然网络确实是导致流量不佳的一大原因之一&#xff0c;但也不能忽视其他因素&#xff0c;包括内容质量、时机选择、互动参与等方面。本文将揭示…

桌面运维转网络要做什么准备,高级网工学习路线分享_运维转网络工程师好转岗吗

如果你的船不进来&#xff0c;请游过去。 做过桌面运维的朋友都知道&#xff0c;这个岗位相当于做牛做马。我做桌面运维的时候要修监控门禁&#xff0c;消防报警广播音响&#xff0c;还要懂暖通空调下水管道疏通&#xff0c;电梯保养与维护&#xff0c;我听到有些同行还得会修桌…

数据采集崩溃恢复:保障业务稳定运行的关键技术特性

一、场景描述 在当今信息时代&#xff0c;数据已成为企业核心竞争力的重要组成部分。对于许多企业而言&#xff0c;数据的采集、处理和分析至关重要。然而&#xff0c;在数据采集和处理过程中&#xff0c;系统崩溃或故障是无法避免的现象。如何在数据采集过程中确保数据的完整…

计量校准公司对校准工程师,会有什么资质要求?

计量校准是指利用一些计量校准工具&#xff0c;对机器、仪器等进行测量和校准。来实现基本功能的正常使用。计量校准安排&#xff0c;是指根据委托方的要求&#xff0c;按照计量器具校准标准&#xff0c;向社会提供计量器具校准服务的安排。今天&#xff0c;我们就来看看计量校…

腾讯音乐:从 Elasticsearch 到 Apache Doris 内容库升级,统一搜索分析引擎,成本直降 80%

导读&#xff1a; 为满足更严苛数据分析的需求&#xff0c;腾讯音乐借助 Apache Doris 替代了 Elasticsearch 集群&#xff0c;统一了内容库数据平台的内容搜索和分析引擎。并基于 Doris 倒排索引和全文检索的能力&#xff0c;支持了复杂的自定义标签计算&#xff0c;实现秒级查…

24最新新手入门指南:Stable Diffusion!

前言 Stable Diffusion&#xff0c;一款新兴的开源AI绘画软件&#xff0c;正逐渐成为数字艺术家和爱好者的新宠。它的强大功能让用户能够轻松创造出令人印象深刻的数字艺术作品。 无论你是专业艺术家还是艺术新手&#xff0c;Stable Diffusion都为你提供了一个探索创造力的新…

如何卸载电脑上的软件?电脑软件彻底删除的3个常见方法(强力卸载注册表)

电脑使用久了&#xff0c;难免会遇到卡顿&#xff0c;运行不流畅的情况&#xff0c;这属于正常现象。造成电脑卡顿的很大部分原因就是因为电脑安装了太多软件了&#xff0c;特别是一些“来路不明”的软件容易影响电脑运行速度。使用电脑时&#xff0c;定期清理电脑垃圾&#xf…

这本书有亿点厉害!带你快速入门扩散模型,从原理到实战!!-《扩散模型从原理到实战》

AIGC爱好者有福了&#xff0c;快看看这本《扩散模型》 书名&#xff1a;《扩散模型&#xff1a;从原理到实战》 作者&#xff1a; 李忻玮等 适合人群&#xff1a; 对扩散模型感兴趣的AI研究人员&#xff1b;有使用AIGC生成图片需求的从业人员&#xff1b;对stable Diffusi…

小米13工程固件预览 修复底层分区 修复nv损坏主板电阻 默认开启diag端口

机型名称 :小米 13【用于以下型号的小米机型:2211133G, 2211133C】机型代号 :fuxi 小米13搭载高通骁龙 8 Gen2八核处理器,预装miui14操作系统;后置5000万像素主镜头+1200万像素超广角镜头+1000万像素长焦镜头,前置3200万像素摄像头;搭载4500毫安时容量不可拆卸电池…

邮件营销案例成功技巧:如何打动目标客户?

邮件营销案例分析成功策略&#xff1f;有哪些优质邮件营销案例&#xff1f; 企业不仅能够与目标客户建立联系&#xff0c;还能有效地推动销售和提升品牌忠诚度。MailBing将通过多个邮件营销成功案例&#xff0c;探讨如何打动目标客户&#xff0c;并分享一些实用的技巧。 邮件…

Rad Studio 12.2 出来了

RAD Studio 12.1之后5个月&#xff0c;RAD Studio 12之后10个月&#xff0c;新发布的RAD Studio12.2加入了客户的反馈&#xff0c;利用人工智能能力的编码支持&#xff0c;64-bit版本的编译器等先进的功能&#xff0c;为应用开发提供更强有力的支持。 本文介绍了RAD Studio 12…

JS 运算符

目录 1. 赋值运算符 2. 一元运算符 2.1 自增 2.1.1 前置自增 2.1.2 后置自增 2.1.3 前置与后置自增对比 3. 比较运算符 3.1 字符串比较 4. 逻辑运算符 4.1 案例 5. 运算符优先级 1. 赋值运算符 2. 一元运算符 2.1 自增 2.1.1 前置自增 2.1.2 后置自增 2.1.3 前置与后…