[RPC]:Feign远程调用

文章目录

  • 摘要
  • 1 RPC框架-Feign
    • 1.1 什么是Feign
    • 1.2 Feign解决的问题
      • 1.2.1 使用RestTemplate发送远程调用代码
        • 1.2.1.1 项目示例调用链路
        • 1.2.1.2 代码逻辑
        • 1.2.1.3 代码实现
        • 1.2.1.4 存在的问题
    • 1.3 Feign如何使用
      • 1.3.1 使用逻辑
      • 1.3.2 引入依赖
      • 1.3.3 启动类添加注释开启feign功能

摘要

摘要:RestTemplate;Feign;远程调用;

1 RPC框架-Feign

1.1 什么是Feign

Feign是一个简化HTTP客户端编写的框架,通过声明式方式将远程服务调用封装成简单接口调用。

1.2 Feign解决的问题

1.2.1 使用RestTemplate发送远程调用代码

要求:系统调用者在查询订单的同时,根据订单中包含的userId查询出用户信息,一起返回。

1.2.1.1 项目示例调用链路

在这里插入图片描述

1.2.1.2 代码逻辑

  • ① 注册一个RestTemplate实例到spring容器
  • ② 修改order-service中OrderService类中queryOrderById方法,根据Order对象中userId查询User
  • ③ 将查询的User填充到Order对象返回。

1.2.1.3 代码实现

//配置类
/**
 * RestTemplate
 *
 */
@Configuration
public class RestTemplateRPC {

    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}
//业务层
    @Resource
    private OrderMapper orderMapper;

    @Resource
    private RestTemplateRPC restTemplateRPC;

    public Order queryOrderById(Long orderId) {
        // 1.查询订单
        Order order = orderMapper.findById(orderId);
        //2.远程调用
        //2.1 远程调用地址
        String url = "http://localhost:8081/user/" + order.getUserId();
        //2.2发起调用
        User user = this.restTemplateRPC.restTemplate().getForObject(url, User.class);
        //3.存入order
        order.setUser(user);
        // 4.返回
        return order;
    }

1.2.1.4 存在的问题

代码可读性差,编码体验不统一
参数复杂URL难以维护,导致代码耦合性太高。

1.3 Feign如何使用

1.3.1 使用逻辑

  • 引入依赖
  • 添加注解
  • 编写Feign客户端

1.3.2 引入依赖

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

1.3.3 启动类添加注释开启feign功能

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

3.数据操作

SQL句子中语法格式提示&#xff1a; 1.中括号&#xff08;[]&#xff09;中的内容为可选项&#xff1b; 2.[&#xff0c;...]表示&#xff0c;前面的内容可重复&#xff1b; 3.大括号&#xff08;{}&#xff09;和竖线&#xff08;|&#xff09;表示选择项&#xff0c;在选择…

网络安全|渗透测试入门学习,从零基础入门到精通—渗透中的开发语言

目录 前面的话 开发语言 1、html 解析 2、JavaScript 用法 3、JAVA 特性 4、PHP 作用 PHP 能做什么&#xff1f; 5、C/C 使用 如何学习 前面的话 关于在渗透中需要学习的语言第一点个人认为就是可以打一下HTML&#xff0c;JS那些基础知识&#xff0c;磨刀不误砍柴…

键盘按键事件 通过键盘上下左右按键移动界面上图标

#main.c文件 #include “keyevent.h” #include int main(int argc, char *argv[]) { QApplication a(argc, argv); KeyEvent w; w.show(); return a.exec();} #include “keyevent.h”//头文件 #ifndef KEYEVENT_H #define KEYEVENT_H #include #include #include cl…

机器学习、计算机视觉和深度学习

机器学习、计算机视觉和深度学习 1 什么是机器学习&#xff1f;2 机器学习的类型3 什么是计算机视觉&#xff1f;4 计算机视觉的机器学习应用5 总结参考 这篇博客将简要介绍&#xff1a;机器学习和用于计算机视觉的机器学习。 想象一下&#xff1a;你可以使用人脸检测算法在图…

自定义修改Typora原生默认github风格样式

使用typora的时候&#xff0c;想要自定义一些颜色、字体&#xff0c;或者修改一些设置&#xff0c;这个时候需要修改或者自己编写css文件。 修改涉及的样式&#xff1a; ① 目录 ② 块应用 我还是比较喜欢原生自带的默认样式&#xff08;github样式&#xff09;&#xff0c; 但…

chatgpt赋能python:Python怎么退出程序:让你轻松掌握退出Python程序的方法

Python怎么退出程序&#xff1a;让你轻松掌握退出Python程序的方法 Python是一种功能强大、易于学习且具有广泛应用的编程语言。在Python开发中&#xff0c;经常需要退出程序&#xff0c;以便在不需要时释放内存和其他资源。那么&#xff0c;Python怎么退出程序&#xff1f;本…

【MySQL】从0到1打开数据库管理

目录 前言&#xff1a; 一.认识MySQL 二.安装MySQL数据库 三、启动和停止MySQL服务 3.1启动服务的两种方式 3.2停止服务的两种方式 四.链接客户端 4.1使用自带的命令行窗口 4.2使用系统自带的命令窗口 五.MySQL是存储数据的模型 六.SQL语言 结尾&#xff1a; 前言&a…

HTML(结构)+CSS(样式基础)

一、HTML前期准备 1. 认识HTML HTML&#xff08;Hyper Text Markup Language&#xff09;&#xff1a;超文本标记语言主要通过标签对网页中的文本、图片、音频、视频等内容进行描述个人理解&#xff1a;对所有需要描述的内容使用标签进行表示 2. HTML布置页面的固定结构 每一个…

Baumer工业相机堡盟工业相机如何使用BGAPISDK的相机图像时间戳计算运行时间以及时间差(C#)

Baumer工业相机堡盟工业相机如何使用BGAPISDK的相机图像时间戳计算运行时间以及时间差&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机BGAPI SDK和图像时间戳的技术背景Baumer工业相机使用BGAPISDK控制相机数据流的方式1.引用合适的类文件2.使用BGAPISDK获取时间戳的…

【Java基础学习打卡06】编程语言

目录 前言一、计算机语言是什么&#xff1f;二、计算机语言分类三、计算机语言介绍1.C语言2.C语言3.Java语言4.Python语言 总结 前言 本文主要是理解计算机语言是什么&#xff0c;有哪些分类&#xff0c;分类下有哪些编程语言&#xff0c;以及了解主流的编程语言。 一、计算机…

【Kubernetes存储篇】常见存储方案及场景分析

文章目录 一、持久化存储理论1、为什么要做数据持久化存储&#xff1f;2、常见持久化存储方案 二、案例&#xff1a;持久化存储方案1、emptydir临时存储卷2、hostPath本地存储卷3、NFS网络共享存储卷 一、持久化存储理论 官方中文参考文档&#xff1a; 1、为什么要做数据持久…

CloudQuery一体化数据库SQL操作安全管控平台

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; CloudQuery一体化数据库SQL操作安全管控平台 导读 CloudQuery作为业界领先的面向企业的数据库安全解决方案&#xff0c;CloudQuery致力于打造一站式安全可靠的数据操…

开源赋能,决胜未来 — 参加原子全球开源峰会有感

目录 文章目录 目录前言开源决胜未来&#xff1a;闭源摧毁 UNIX&#xff0c;开源成就 Linux开源创新&#xff1a;软硬件协同&#xff0c;共建开源生态 前言 开源原子基金会作为国内首家开源基金会组织&#xff0c;由其主办的首届 “开放原子全球开源峰会” 也是第一次被冠以 “…

软件测试工程师如何从功能测试转成自动化测试

功能测试转成自动化测试&#xff0c;答案就三个字&#xff1a;“靠学习”。 学习自动化的方法无非是三种&#xff1a; 一、靠培训&#xff08;下方有如何选择培训机构&#xff09; 在相对有氛围的学习环境中来学习自动化测试&#xff0c;这是一个较快学习的方法。二、靠自学自…

2023年网络安全竞赛——网络安全应急响应Server2228

网络安全应急响应 任务环境说明&#xff1a; 服务器场景&#xff1a;Server2228&#xff08;开放链接&#xff09; 用户名&#xff1a;root&#xff0c;密码&#xff1a;pssw0rd123 1. 找出被黑客修改的系统别名&#xff0c;并将倒数第二个别名作为Flag值提交&#xff1b…

大数据Doris(四十四):kafka json 数组格式数据导入到Doris

文章目录 kafka json 数组格式数据导入到Doris 一、创建 Doris 表 二、创建 Kafka topic

Appium知多少

Appium我想大家都不陌生&#xff0c;这是主流的移动自动化工具&#xff0c;但你对它真的了解么&#xff1f;为什么很多同学搭建环境时碰到各种问题也而不知该如何解决。 appium为什么英语词典查不到中文含义&#xff1f; appium是一个合成词&#xff0c;分别取自“applicatio…

知识图谱实战应用16-知识图谱在化学物质结构上的应用,快速查找化学分子式与结构

大家好,我是微学AI,今天给大家介绍一下知识图谱实战应用16-知识图谱在化学物质结构上的应用,快速查找化学分子式与结构。在化学领域,知识图谱可以应用于化学物质结构上。化学物质结构主要指分子结构和化学键的组成情况。知识图谱可以将化学物质结构的相关数据以图谱的形式展…

Opensearch基本介绍

OpenSearch 是一个社区驱动的开源搜索和分析套件&#xff0c;开发人员使用该套件来摄取、搜索、可视化和分析数据。 OpenSearch 由数据存储和搜索引擎 (OpenSearch)、可视化和用户界面 (OpenSearch Dashboards) 以及服务器端数据收集器 (Data Prepper) 组成。 用户可以使用一系…

devart ADO.NET Data Providers 2023

ADO.NET Data Providers 2023 dotConnect 开发与数据相关的 .NET 应用程序的终极解决方案,具有 ORM 支持的快速灵活综合功能丰富的 ADO.NET 提供程序 ADO.NET 数据提供者 高性能 ADO.NET 数据提供程序 dotConnect 是一个增强的数据连接解决方​​案&#xff0c;它建立在 ADO.N…