SpringCloud OpenFeign 学习

news2024/11/25 0:21:04

SpringCloud OpenFeign

文章目录

    • SpringCloud OpenFeign
      • 1 OpenFeign介绍
      • 2 OpenFeign-应用实例
      • 3 OpenFeign 测试

1 OpenFeign介绍

  1. OpenFeign 是个声明式 WebService 客户端,使用 OpenFeign 让编写 Web Service 客户端
    更简单

  2. 它的使用方法是定义一个服务接口然后在上面添加注解

  3. OpenFeign 也支持可拔插式的编码器和解码器。

  4. Spring Cloud 对 OpenFeign 进 行 了 封 装 使 其 支 持 了 Spring MVC 标 准 注 解 和
    HttpMessageConverters

  5. OpenFeign 可以与 Eureka 和 Ribbon 组合使用以支持负载均衡

2 OpenFeign-应用实例

image-20230601103316911

方案1:Ribbon+RestTemplate 返回的是拼接url

public class MemberConsumerController {
	public static final String MEMBER_SERVICE_PROVIDER_URL =
            "http://MEMBER-SERVICE-PROVIDER";

    @Resource
    private RestTemplate restTemplate;

    @GetMapping("/member/consumer/get/{id}")
    public Result<Member> queryMemberById(@PathVariable("id") Long id) {
        return restTemplate.getForObject
                (MEMBER_SERVICE_PROVIDER_URL + "/member/get/" + id, Result.class);
    }
    
}

方案2:OpenFeign 返回 - -》调用业务层 --》调用eureka-server方法

  • queryMemberByid方法名可以修改,但必须和eureka-server的方法一致
  • GetMaping 路径必须一致,因为接口调用实际上用的还是eureka-server上的接口
@Component
//这里 MEMBER-SERVICE-PROVIDER 就是 Eureka Server服务提供方注册的名称
@FeignClient(value = "MEMBER-SERVICE-PROVIDER")
public interface MemberFeignService {

    /**
     * 1. 远程调用的方式为 get
     * 2. 远程调用的 url 为 http://MEMBER-SERVICE-PROVIDER/member/get/{id}
     * 3. MEMBER-SERVICE-PROVIDER 是注册中心服务
     *
     *  member-service-provider:10000/10002
     *  4. 会根据 OpenFeign的均衡算法来决定是调用 10000还是10002
     */
    @GetMapping("/member/get/{id}")
    public Result queryMemberById(@PathVariable("id") Long id);

}
  • 装配业务层 - -》 直接调用返回
@RestController
public class MemberConsumerFeignController {

    @Resource
    private MemberFeignService memberFeignService;

    @GetMapping("/member/consumer/openfeign/get/{id}")
    public Result<Member> queryMemberById(@PathVariable("id") Long id){
        return memberFeignService.queryMemberById(id);
    }
}

3 OpenFeign 测试

  1. 浏览器输入 : http://localhost/member/consumer/openfeign/get/1
  2. 观察访问的 10000/10002

image-20230601110905292

image-20230601110917926

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

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

相关文章

【Java 抽象类抽象方法】什么是抽象类方法,如何定义,起什么作用?

博主&#xff1a;_LJaXi Or 東方幻想郷 专栏&#xff1a; Java | 从入门到入坟 Java 抽象类 & 抽象方法 抽象类的概念 &#x1f445;抽象方法的概念 &#x1f42c;抽象类和抽象方法结合使用 &#x1f984; Java中的抽象类和抽象方法是面向对象编程中的重要概念&#xff0c;…

【系统学习】Java基础4之lamda表达式和函数式接口

lamda表达式与函数式接口 lamda表达式 语法格式一&#xff1a;无参&#xff0c;无返回值 Lambda 需要一个参数&#xff0c;但是没有返回值 语法格式三&#xff1a;数据类型可以省略&#xff0c;因为可由编译器推断得出&#xff0c;称为“类型推断” 语法格式四&#xff1a;…

MySQL和Redis之间的存储区别

概述 MySQL是一种关系型数据库&#xff0c;而Redis是一种键值对存储数据库。虽然它们都是用来存储和管理数据的&#xff0c;但是它们在很多方面都有不同&#xff0c;但是它们在存储策略、日志存储方式、硬盘存储、数据恢复等方面都有一定的区别。 数据类型 MySQL支持多种数据…

电脑怎么通过网络传输文件?

可以通过网络在电脑之间传输文件吗&#xff1f; “由于天气的原因&#xff0c;我的老板决定让所有员工在家工作。但是我很多工作文件都在公司的电脑中&#xff0c;怎么才能将公司的文件远程传输到我家里的电脑上&#xff1f;电脑可以通过网络远程传输文件吗&#xff1f;” …

计算机网络 | I/O模型、网络模型(OSI七层及TCP/IP四层)

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

Python快速实现网页工具的利器

Python快速实现网页工具的利器 Streamlit是一个基于Python的Web应用程序开发框架&#xff0c;它具有快速开发、交互式、易于使用等特点。使用Streamlit&#xff0c;开发者可以很容易地将Python代码转换为漂亮的、交互式的Web应用程序&#xff0c;无需繁琐的前端开发经验。 如果…

什么是浪涌保护器SPD

浪涌保护器&#xff08;SPD&#xff09;&#xff0c;也称为电涌保护器&#xff0c;是为各种电子设备&#xff0c;仪器和通信线路提供安全保护的电子设备。当由于外部干扰在电路或通信电路中突然产生尖峰电流或电压时&#xff0c;浪涌保护装置可以在很短的时间内传导和分流&…

设计模式之~策略模式

策略模式&#xff08;Strategy&#xff09;&#xff1a; 它定义了算法家族&#xff0c;分别封装起来&#xff0c;让它们之间可以互相替换&#xff0c;此模式让算法的变化&#xff0c;不会影响到使用算法的客户。 结构图&#xff1a; 实例&#xff1a; 优点&#xff1a; 策略模式…

MySQL行锁浅析

概述 MySQL是非常流行的关系型数据库&#xff0c;许多系统都使用它来存储和管理数据。在高并发环境下&#xff0c;为了保证数据的一致性和可靠性&#xff0c;数据库需要实现并发控制&#xff0c;其中包括锁机制。MySQL提供了两种锁类型&#xff0c;一种是表级锁&#xff0c;另…

Java遍历Map集合,获取key、value等方式

首先构建一个Map集合&#xff1a; Map<String, Integer> buynew HashMap<>();buy.put("苹果手机", 2);//添加键值对buy.put("智能手表", 1);buy.put("java书", 1);buy.put("c语言书", 1);buy.put("西瓜", 2);打…

Git已经在本地提交过文件了,但又给撤销了,恢复已经撤销的内容

Git&#xff0c;我已经在本地提交过文件了&#xff0c;也就是已经执行了git commit -m "xxx"&#xff0c;但提交完之后又给撤销了&#xff0c;撤销的还能回来嘛&#xff1f; 这种情况仍然有机会恢复它。撤销提交的方法取决于你撤销提交的方式。 说白了就是&#xff0…

背景 | 基于 Transformers 的编码器-解码器模型

!pip install transformers4.2.1 !pip install sentencepiece0.1.95 Vaswani 等人在其名作 Attention is all you need 中首创了 基于 transformer 的编码器-解码器模型&#xff0c;如今已成为自然语言处理 (natural language processing&#xff0c;NLP) 领域编码器-解码器架构…

深度解读生命周期函数

目录 前言什么是生命周期&#xff1f;生命周期的流程创建组件初始化事件和生命周期初始化组件判断渲染结构的数据与模板生成HTML结构渲染HTML结构数据更新初步销毁组件销毁组件 生命周期函数beforeCreatecreatedbeforeMountmountedbeforeUpdateupdatedbeforeDestroydestroyed 前…

视觉SLAM数据集(二):EuRoC DataSet

本文展示了在微型飞行器&#xff08;MAV&#xff09;上收集的视觉惯性数据集。数据集包含立体图像、同步 IMU 测量以及精确的运动和结构地面实况。 这些数据集发表于&#xff1a;M. Burri&#xff0c;J. Nikolic&#xff0c;P. Gohl&#xff0c;T. Schneider&#xff0c;J. Reh…

运维监控Zabbix部署——详细图文讲解

运维监控Zabbix部署 简介 Zabbix 由 Alexei Vladishev 创建&#xff0c;目前由其成立的公司—— Zabbix SIA 积极的持续开发更新维护&#xff0c; 并为用户提供技术支持服务。 Zabbix 是一个企业级分布式开源监控解决方案。 Zabbix 软件能够监控众多网络参数和服务器的健康…

StarRocks案例2: 升级后性能变慢

文章目录 一. 问题描述二. 解决方案2.1 从慢查询定位2.2 定位CPU解析时间就的问题 一. 问题描述 2023-05-18 将StarRocks从2.3.0升级到2.5.5。 升级完成后&#xff0c;所有的查询均比较慢&#xff0c;前端报表页面点开也卡。 二. 解决方案 2.1 从慢查询定位 StarRocks慢查询…

智慧档案馆十防一体化建设主要设计依据

1、《中华人民共和国档案法》 2、《中华人民共和国档案实施办法》 3、GB/T 9386-1988《计算机软件测试文件编制规范》 4、GB/T 15532-1995《计算机软件单元测试规范》 5、GB/T 30961-2014 嵌入式软件质量度量 6、GB2421-89 电工电子产品基本环境试验规程 7、GB16796-2009…

阿里影业业绩:2023财年经调整EBITA盈利2.95亿元,同比增加106%

今年以来&#xff0c;社会经济加速恢复&#xff0c;影视业也在加速抓住市场机遇&#xff0c;走进电影院的佳作和消费者都在顺势增长。 5月31日&#xff0c;阿里影业&#xff08;01060&#xff09;发布2022/23财年业绩&#xff0c;得益于业务结构的多样化建设及运营效率的持续提…

调试代码可能会成为潜在的安全漏洞

有时候&#xff0c;我们不得不开发一些所谓的”调试用”代码。 但是&#xff0c;不要忘记了&#xff0c;虽然这些调试代码只是用来调试的&#xff0c;但是并不意味着我们就可以忽略掉安全性。 我记得&#xff0c;曾经有一位客户问过如下的问题&#xff1a; 我们正在开发一个后…

一文带你搞懂防盗链

防盗链 举个例子。我们平时在网上看到图片&#xff0c;觉得不错&#xff0c;想要复制地址。有的复制地址后我们可以拿来用&#xff0c;但是有的&#xff0c;就算是复制地址&#xff0c;用到我们自己的img上&#xff0c;还是没效果。 原因是&#xff0c;有的图片所在服务有自己…