SpringCloudAlibaba全网最全讲解5️⃣之Feign(建议收藏)

news2024/10/6 4:57:28

🌈专栏简介

    感谢阅读,希望能对你有所帮助,博文若有瑕疵请在评论区留言或在主页个人介绍中添加我私聊我,感谢每一位小伙伴不吝赐教。我是XiaoLin,既会写bug也会唱rap的男孩,这个专栏主要是介绍目前微服务最主流的解决方案,SpringCloudAlibaba,将会分组件介绍。专栏地址: SpringCloudAlibaba。

  • SpringCloudAlibaba全网最全讲解3️⃣之Ribbon(建议收藏)
  • SpringCloudAlibaba全网最全讲解3️⃣之Nacos(建议收藏)
  • SpringCloudAlibaba全网最全讲解2️⃣(建议收藏)
  • SpringCloudAlibaba全网最全讲解1️⃣(建议收藏)

七、远程调用:Feign

7.1、Feign简介

    Feign是Spring Cloud提供的一个声明式的伪Http客户端, 它使得调用远程服务就像调用本地服务一样简单, 只需要创建一个接口并添加一个注解即可。

    Nacos很好的兼容了Feign, Feign默认集成了 Ribbon, 所以在Nacos下使用Fegin默认就实现了负载均衡的效果。

7.2、Feign实战

7.2.1、添加依赖

    在shop-order-server项目的pom文件加入Fegin的依赖。

<!--fegin组件-->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
复制代码

7.2.2、添加注解

    我们需要在启动类上添加@EnableFeignClients注解,只有有了这个注解才会扫描。

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients // 支持Feign
public class ShopOrderServerApp {
  public static void main(String[] args) {
    SpringApplication.run(ShopOrderServerApp.class,args);
  }

  @Bean
  @LoadBalanced
  public RestTemplate getInstance(){
    return new RestTemplate();
  }
}
复制代码

7.2.3、新增ProductFeignApi

    在Shop-order-server中新增一个接口。

// name指定FeignClient的名称,如果项目使用了Ribbon,name属性会作为微服务的名称,用于服务发现
@FeignClient(name = "product-service")
public interface ProductFeignApi {
  @RequestMapping("/product")
  Product findById(@RequestParam("productId") Long productId);
}
复制代码

7.2.4、修改Controller

  @Autowired
  ProductFeignApi productFeignApi;
  @Override
  public Order getById(Long oid, Long pid) {
    Product product = productFeignApi.findById(pid);
    Order order = orderDao.getOne(oid);
    order.setPname(product.getPname());
    return order;
  }
复制代码

7.3、Feign的重要属性

    我们可以配置超时属性。

feign:
  client:
    config:
      default:
        connectTimeout: 5000
        readTimeout: 5000
复制代码

7.4、Feign实现原理

  1. 启动后会会根据配置在启动类上的@SpringBootApplication去扫描贴了@FeignClient注解的类,并为其创建代理对象。
  2. 通过反射拿到代理类实现的接口:ProductFeignApi。
  3. 通过反射拿到接口上注解并且将注解中心的name属性拿出来:product-service。
  4. 通过反射拿到接口中的方法,并且拿到接口中方法上的注解@RequestMapping,并且把值拿出来:/product。
  5. 将方法中参数注解中的值也拿出来,这个是我们传进来的参数:productId。
  6. 拼接出路径:http://product-service/product?productId=1。
  7. 根据本地的服务清单去找对应的节点信息。
  8. 根据你配置的ribbon负载均衡策略去选择节点。
  9. 将product-service替换成对应的节点信息和端口。
  10. 使用RestTemplate发送请求。

 

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

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

相关文章

4 款适用于 Windows 的最佳免费 GIS 软件

GIS 代表地理信息系统&#xff0c;用于分析、存储、操作和可视化地图上的地理信息。GIS是一种应用广泛的软件&#xff0c;在农业、天文、考古、建筑、银行、航空等各个领域都有应用。开始这些项目&#xff0c;需要 shapefile。一些网站提供不同国家的免费 shapefile。下载免费 …

软件测试入门+面试点

前言&#xff1a;大约是2022年11月18日&#xff0c;我想学习软件测试&#xff0c;在此之前我是Java路线的&#xff0c;这不大环境的竞争激烈在加上自身的能力分析&#xff0c;我认为测试可能是我找工作路上的救赎之光&#xff0c;又恰逢这个时间点&#xff0c;留给我的时间不多…

python实现综合评价模型TOPSIS

原文&#xff1a;https://mp.weixin.qq.com/s/J9fZQ8T9TR1Ed7taPGYYjw 1 TOPSIS简介 有关综合评价的方法有多种&#xff0c; 根据赋权方法不同主要有两类&#xff1a;一类是主观赋值法&#xff0c; 如指数法、层次分析法、模糊综合评价法等&#xff1b;另一类是客观赋值法&am…

Ceph集群部署

目录 一、环境准备 1、准备4台centos服务器 2、配置ceph源 3、配置主机名解析和SSH互信 4、NTP时间同步 二、ceph集群部署 1、安装ceph组件 2、部署MON集群 3、部署OSD集群 一、环境准备 1、准备4台centos服务器 主机主机名IP备注客户端client192.168.2.10关闭selin…

中国传统节日春节网页HTML代码 春节大学生网页设计制作成品下载 学生网页课程设计期末作业下载 DW春节节日网页作业代码下载

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

常用眼底图像数据集简介及下载--糖尿病视网膜病变(Eyepacs,APTOS2019,Messdior,Messdior-2,STARE数据集)

一、糖尿病视网膜病变图像介绍 1.微动脉瘤通常出现在病变早期&#xff0c;它是由于眼部毛细血管缺氧导致血管壁变薄&#xff0c;从而在视网膜上呈现出深红色的点状物 2.出血点一般出现在血管附近&#xff0c;它是由于血管阻塞导致血液渗出形成的&#xff0c;呈现暗斑状 3.软性和…

包含min函数的栈、栈的压入弹出序列、从上往下打印二叉树、二叉搜索树的后序遍历序列

文章目录1、包含min函数的栈2、栈的压入弹出序列3、从上往下打印二叉树4、二叉搜索树的后序遍历序列1、包含min函数的栈 本题考点&#xff1a; 栈的规则性设计 牛客链接 题目描述&#xff1a; 定义栈的数据结构&#xff0c;请在该类型中实现一个能够得到栈中所含最小元素的 m…

python之函数返回值传参Lambda表达式

目录 一、函数 函数与方法的区别 二、 函数返回值 三、函数传参 四、lambda表达式 一、函数 函数与方法的区别 直接调用的是函数 通过对象点出来的是方法 print("hello") a [2, 1, 3] # 对象 a.sort() print(a) 二、 函数返回值 # 返回值 def sum(*ar…

云服务器最佳实践-Linux云服务器SSH登录的安全加固

Linux云服务器常用的登录方式是SSH&#xff0c;对于密码登录方式创建的云服务器&#xff0c;如何保证登录安全性呢&#xff1f;本文以CentOS 7.6为例&#xff0c;对SSH登录进行安全加固。 修改默认端口 1、通过SSH密码方式远程登录云服务器。 2、执行以下命令&#xff0c;修改…

4-Arm PEG-N3,4-Arm PEG-Azide,四臂-聚乙二醇-叠氮一种多臂PEG衍生物

4-Arm PEG-Azide&#xff08;4-Arm PEG-N3&#xff09;一种多臂PEG衍生物&#xff0c;中文名为四臂-聚乙二醇-叠氮&#xff0c;它所属分类为Azide PEG Multi-arm PEGs。 该多臂peg衍生物的分子量均可定制&#xff1a;四臂-PEG 2000-叠氮、4-Arm PEG-N3 20000、四臂-peg 1000-叠…

linux常用服务配置、网络配置 和 基于FTP的上传和下载的几种方式

一. 网络服务配置 1. 主机名配置 hostname&#xff1a; 查看主机名 hostname xxx&#xff1a; 修改主机名(重启后无效) PS: 如果想要永久生效&#xff0c;可以修改/etc/sysconfig/network文件 2. 静态IP的配置 (1). 查看ip地址 &#xff1a; ifconfig (2). 临时修改ip地址&…

OpenCV实现文档自动矫正(含源码和测试数据)

OpenCV实现文档自动矫正&#xff08;含源码和测试数据&#xff09; 目录 OpenCV实现文档自动矫正 1. OpenCV文档矫正的方法 &#xff08;1&#xff09;基于霍夫变换的文档矫正方法 &#xff08;2&#xff09;基于透视变换的文档矫正方法 2. OpenCV文档自动矫正实现 &…

【Linux系统】第二篇、权限管理篇

文章目录一、Linux下的用户二、文件的权限1. 文件访问者的分类2. 文件类型和访问权限3. 文件权限值的表示方法三、文件访问权限的相关设置方法1. chmod2. chown3. chgrp4. umask&#xff08;重点&#xff09;四、file指令五、目录的权限粘滞位一、Linux下的用户 这里我们在上一…

从 12K 到 60K, 这 2023Java 研发必问高级面试题,过关斩将拿 offer

前言 学习某一门技术或者框架的时候&#xff0c;第一步当然是要了解下面这几样东西。 是什么&#xff1f; 有哪些特点&#xff1f; 有哪些应用场景&#xff1f; 有哪些成功使用的案例&#xff1f; … 为了让你更好地了解 Netty 以及它诞生的原因&#xff0c;先从传统的网…

R语言中实现马尔可夫链蒙特卡罗MCMC模型

什么是MCMC&#xff0c;什么时候使用它&#xff1f; MCMC只是一个从分布抽样的算法。 这只是众多算法之一。这个术语代表“马尔可夫链蒙特卡洛”&#xff0c;因为它是一种使用“马尔可夫链”&#xff08;我们将在后面讨论&#xff09;的“蒙特卡罗”&#xff08;即随机&#…

区间信息维护与查询【树状数组 】 - 原理1 一维树状数组

区间信息维护与查询【树状数组 】 - 原理1 一维树状数组 【原理1】 一维树状数组 有一个包含n 个数的数列2, 7, 1, 12, 5, 9 …&#xff0c;请计算前i 个数的和值&#xff0c;即前缀和sum[i ]a [1]a [2]…a [i ]&#xff08;i 1, 2, …, n&#xff09;。该怎么计算呢&#xf…

RISC-V入门(基础概念+汇编部分) 基于 汪辰老师的视频笔记

RISC-V入门 [完结] 循序渐进&#xff0c;学习开发一个RISC-V上的操作系统 - 汪辰 - 2021春 RISC-V 部分作业答案 参考 RISC-V ISA 基本介绍 历史简介 自由&#xff08;Free&#xff09;与开放&#xff08;Open&#xff09; RISC-V 念作 “risk-five”&#xff0c;代表着Berke…

JSON.stringify() / JSON.parse() / JSON 真是个好东西

目录 1. JSON 基本概念 1.1 JavaScript 对象表示法 1.2 JSON 文件 1.3 JSON 语法 2. XML VS JSON 2.1 共同点 2.2 不同点 2.3 使用步骤对比 3. JSON.parse() 3.1 使用介绍 3.2 使用 reviver 参数&#xff0c;将 JSON 对象解析出来的 string 转化为 Date 4. JSON.st…

【ML特征工程】第 4 章 :特征缩放的影响:从词袋到 Tf-Idf

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

【知识网络分析】耦合网络(bibliographic coupling)

耦合网络(bibliographic coupling) 1 读取本地文献并构建耦合网络数据集2 网络数据集精简3 中心点附近网络子群绘制4 求解网络图中节点中心度相关指标数值1 读取本地文献并构建耦合网络数据集 新建一个notebook文件,第一步导入功能包和数据集,案例中仍使用2020-2021年WOS数…