SpringCloud开发实战(四):Feign远程调用

news/2024/9/13 9:01:31/文章来源:https://blog.csdn.net/qq_15752347/article/details/141905969

目录
SpringCloud开发实战(一):搭建SpringCloud框架
SpringCloud开发实战(二):通过RestTemplate实现远程调用
SpringCloud开发实战(三):集成Eureka注册中心

Feign简介

我们来看看我们以前利用RestTemplate发起远程调用的代码:
在这里插入图片描述
这是不是存在一些问题:
•代码可读性差,属于硬编码。
•参数复杂情况下URL难以维护

Feign是一个声明式的http客户端,官方地址:https://github.com/OpenFeign/feign
在 Feign 中,可以通过创建接口并注解的方式定义 HTTP 请求,而不需要像传统的 HttpClient 或者 RestTemplate 那样编写较为繁琐的代码。这样可以提高代码的可读性和可维护性。其作用就是帮助我们优雅的实现http请求的发送,解决上面提到的问题。
在这里插入图片描述

引入依赖

我们在order-service服务的pom文件中引入feign的依赖:

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

添加注解

我们在order-service的启动类添加注解开启Feign的功能:@EnableFeignClients
在这里插入图片描述

编写Feign的客户端

我们在order-service中新建一个接口,内容如下:

import org.demo.entity.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;@FeignClient("userService")
public interface UserClient {@GetMapping("/user/{id}")User findById(@PathVariable("id") Long id);
}

在这里插入图片描述

这个客户端主要是基于SpringMVC的注解来声明远程调用的信息,比如:

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

这样,Feign就可以帮助我们发送http请求,无需自己使用RestTemplate来发送了。

替换RestTemplate

修改order-service中的OrderService类中的queryOrderById方法,使用Feign客户端代替RestTemplate:
在这里插入图片描述

测试

我们正常启动服务,然后还是调用订单接口http://localhost:8081/order/101,能够发现,正常获取到User对象。
在这里插入图片描述
至此,我们成功使用Feign替换了RestTemplate来实现远程调用,如果文章有任何错误,还请大家指出。不胜感激!!!

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

如若内容造成侵权/违法违规/事实不符,请联系编程新知网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习(五) -- 监督学习(8) --神经网络1

机器学习系列文章目录及序言深度学习系列文章目录及序言 上篇&#xff1a;机器学习&#xff08;五&#xff09; -- 无监督学习&#xff08;2&#xff09; --降维2 下篇&#xff1a;机器学习&#xff08;五&#xff09; -- 监督学习&#xff08;8&#xff09; --神经网络2 前言…

基于SSM+MySQL的医院在线挂号系统

系统背景 在当前数字化转型浪潮的推动下&#xff0c;医疗服务行业正经历着前所未有的变革。随着人口老龄化的加剧、患者就医需求的日益增长以及医疗资源分布不均等问题的凸显&#xff0c;传统的就医模式已难以满足患者对于便捷、高效医疗服务的需求。因此&#xff0c;构建一套基…

设计模式 —— 单例模式

文章目录 一、单例模式1.1 单例模式定义1.2 单例模式的优点1.3 单例模式的缺点1.4 单例模式的使用场景 二、普通案例2.1 饿汉式单例模式(Eager Initialization Singleton)2.2 懒汉式单例模式(Lazy Initialization Singleton) 参考资料 本文源代码地址为 java-demos/singeleton-…

探索未来科技发展:芯片设计的创新之路

在当今这个日新月异的数字时代&#xff0c;芯片设计作为信息技术的核心驱动力&#xff0c;正以前所未有的速度推动着社会进步与产业升级。作为科技领域的璀璨明珠&#xff0c;芯片设计不仅关乎数据处理的速度与效率&#xff0c;更是人工智能、物联网、云计算等技术得以实现的基…

Docker 详解及详细配置讲解

Docker 简介 2008 年LXC(LinuX Contiainer)发布&#xff0c;但是没有行业标准&#xff0c;兼容性非常差 docker2013年首次发布&#xff0c;由Docker, Inc开发 什么是 Docker Docker是管理容器的引擎&#xff0c;为应用打包、部署平台&#xff0c;而非单纯的虚拟化技术&#xf…

不小心删除丢失了所有短信?如何在 iPhone 上查找和恢复误删除的短信

不小心删除了一条短信&#xff0c;或者丢失了所有短信&#xff1f;希望还未破灭&#xff0c;下面介绍如何在 iPhone 上查找和恢复已删除的短信。 短信通常都是非正式和无关紧要的&#xff0c;但短信中可能包含非常重要的信息。因此&#xff0c;如果您删除了一些短信以清理 iPh…

Python画笔案例-032 绘制螺旋扇子

1、绘制螺旋扇子 通过 python 的turtle 库绘螺旋扇子图&#xff0c;如下图&#xff1a; 2、实现代码 绘制螺旋扇子&#xff0c;以下为实现代码&#xff1a; """螺旋扇子.py """ import turtle from coloradd import * # 从coloradd命令导…

win12R2安装.NET Framework 3.5

一丶安装原因 因此插件的缺失, 有些软件或系统不支持安装. 二丶安装步骤 1丶下载.NET Framework 3.5 点击插件下载, 提取码: 1995, 下载完成之后解压到想要安装的位置上. 2丶打开 服务器管理器 3丶点击: 管理 -> 添加角色和功能 4丶点击下一步到服务器角色, 选择web服…

版本控制的核心:Git中的哈希与默克尔树解析

Git是最常用的代码版本控制工具。它帮助我们跟踪代码的更改、管理代码版本&#xff0c;同时保证代码库的完整性和安全性。我们知道 Git 中有一些基本的操作&#xff0c;比如commit、merge、rebase等&#xff0c;但这些操作的底层机制是如何实现的呢&#xff1f;哈希函数和默克尔…

计算机毕业设计Spark+PyTorch知识图谱房源推荐系统 房价预测系统 房源数据分析 房源可视化 房源大数据大屏 大数据毕业设计 机器学习

《SparkPyTorch知识图谱房源推荐系统》开题报告 一、选题背景与意义 1.1 选题背景 随着互联网的快速发展和大数据技术的广泛应用&#xff0c;房地产行业特别是房屋租赁市场迎来了前所未有的变革。房源信息的海量增长使得用户在寻找合适的房源时面临巨大挑战。传统的房源推荐…

电路分析 ---- 电平移位电路

1 电平移位电路 如图所示的电平移位电路&#xff0c;用于ADC的前级驱动&#xff0c;它将一个变化范围为-10V ~ 10V的输入信号&#xff0c;线性变化成0.048V ~ 4.048V的信号&#xff0c;以满足ADC的输入范围要求。 2 电路说明 V R E F V_{REF} VREF​为电压基准源&#xff0c…

开源软件指南

目录 什么是开源软件 开源软件的历史和哲学 什么是开源许可证 开源许可证的类型 ​编辑 开源合规性 版权和知识产权合规性 安全合规性 什么是开源软件政策 开源软件安全 库存和软件物料清单(SBOM) 依赖项更新 开源漏洞扫描 二进制存储库管理器 开源软件的当前趋势…

轻量级模型解读——MobileNet系列

MobileNet系列到现在2024年&#xff0c;已经出到了第四个版本&#xff0c;分别如下&#xff1a; 2017年MobileNetv1——>2018年MobileNetv2——>2019年MobileNetv3——>2024年MobileNetv4&#xff0c;下面简要概述一下几个版本的改进部分。 目录 1、MobileNetv12、Mob…

聊聊Redis分布式锁的八大坑

前言 在分布式系统中&#xff0c;由于redis分布式锁相对于更简单和高效&#xff0c;成为了分布式锁的首先&#xff0c;被我们用到了很多实际业务场景当中。 但不是说用了redis分布式锁&#xff0c;就可以高枕无忧了&#xff0c;如果没有用好或者用对&#xff0c;也会引来一些…

JavaEE-HTTPHTTPS

目录 HTTP协议 一、概念 二、http协议格式 http请求报文 http响应报文 URL格式 三、认识方法 四、认识报头 HTTP响应中的信息 HTTPS协议 对称加密 非对称加密 中间人攻击 解决中间人攻击 HTTP协议 一、概念 HTTP (全称为 "超⽂本传输协议") 是⼀种应⽤…

k8s配置

一、前期准备 1、修改主机的/etc/hosts文件挟持域名 [rootk8s-master ~]# vim /etc/hosts 192.168.8.199 k8s-master 192.168.8.200 k8s-node1 192.168.8.201 k8s-node2 2、配置yum源 [rootk8s-master ~]# cd /etc/yum.repos.d/ [rootk8s-master yum.repos.d]# vim kubernetes…

最新实践!如何基于 DB-GPT 搭建财报分析助手?

DB-GPT 财报分析助手 精准解析数据 实现智慧决策 背景 最近&#xff0c;利用大模型进行财务报表分析正逐渐成为垂直领域的一个热门应用。大模型能够比人类更准确地理解复杂的财务规则&#xff0c;并在基于专业知识的基础上输出合理的分析结果。然而&#xff0c;财务报表信…

web3.0区块链元宇宙是什么

Web3.0 什么是 Web3.0 Web3.0是指基于区块链的去中心化在线生态系统&#xff0c;代表了互联网的下一个阶段。它是由以太坊联合创始人Gavin Wood在2014年创造的概念。Web3.0的发展是随着用户权利的增加和在互联网中角色的重要性不断进化的。 从互联网的发展历程来看&#xff0…

opencv之形态学

文章目录 1. 什么是形态学2. 形态学操作2.1 腐蚀2.2 膨胀2.3 通用形态学函数2.4 开运算2.5 闭运算2.6 形态学梯度运算2.7 礼帽运算2.8 黑帽运算 1. 什么是形态学 在图像处理领域&#xff0c;形态学是一种基于形状的图像分析技术&#xff0c;用于提取和处理图像的形态特征。这包…

【科研绘图】【风筝图】:附Origin详细画图流程

目录 No.1 理解风筝图 1 什么是风筝图 2 解读风筝图 No.2 画图流程 1 导入数据&#xff0c;绘制图形 2 设置绘图细节 3 设置坐标轴 4 效果图 No.1 理解风筝图 1 什么是风筝图 风筝图&#xff0c;也称为点图或散点图的一种变体&#xff0c;在生态学和环境科学中&#x…