SpringCloud - Feign远程调用

news2024/11/24 11:54:38

目录

Feign的远程调用

RestTemplate方式调用存在的问题

介绍与初步使用

Feign的自定义配置

Feign运行自定义配置来覆盖默认配置,可以修改的配置如下:

配置Feign日志有两种方式:

Feign性能优化

Feign底层的客户端实现:

连接池配置

Feign实现方式

方式一(继承):

方式二(抽取):

抽取FeignClient方式实现


  • Feign的远程调用

  • RestTemplate方式调用存在的问题

  • 先来看以前利用RestTemplate发起远程调用的代码:

  • 存在以下问题:
    • 代码可读性差,编程体验不统一
    • 参数复杂URL难以维护
  • 引入Feign优雅的实现http请求的发送,解决上面的问题
  • 介绍与初步使用

  • Feign是一个声明式的http客户端
  • 使用Feign的步骤如下:
  • 1.引入依赖

  • 2.在启动类上添加开启Feign功能的注解@EnableFeignClients

  • 3.编写Feign的客户端

  • 主要是基于SpringMVC的注解来声明远程调用的信息
    • 服务名称:userservice
    • 请求方式:GET
    • 请求路径:/user/{id}
    • 请求参数:Long id
    • 返回值类型:User
  • 4.远程调用http请求,替换RestTemplate
  • 5.测试成功

  • Feign的自定义配置

  • Feign运行自定义配置来覆盖默认配置,可以修改的配置如下:

  • 一般需要配置的就是日志级别
  • 日志默认级别:
    • NONE:不记录任何日志信息,这是默认值。
    • BASIC:仅记录请求的方法,URL以及响应状态码和执行时间(建议使用)
    • HEADERS:在BASIC的基础上,额外记录了请求和响应的头信息
    • FULL:记录所有请求和响应的明细,包括头信息、请求体、元数据
  • 配置Feign日志有两种方式:

  • 方式一:配置文件方式
    • 1.全局生效:

    • 2.局部生效:
  • 方式二:java代码方式,需要先声明一个Bean:

    • 1.而后如果是全局配置,则把它放到@EnableFeignClients这个注解中:
    • 2.如果是局部配置,则把它放到@FeignClient这个注解中:
  • Feign性能优化

  • Feign底层的客户端实现:

    • URLConnection:默认实现,不支持连接池
    • Apache HttpClient :支持连接池
    • OKHttp:支持连接池
  • 因此提高Feign的性能主要手段就是使用连接池代替默认的URLConnection
  • 连接池配置

  • Feign添加HttpClient的支持:
  • 1.在order-service的pom文件中引入Apache的HttpClient依赖

  • 2.配置连接池,在order-service的application.yml中添加配置

  • Feign实现方式

  • 方式一(继承):

  • 给消费者的FeignClient和提供者的controller定义统一的父接口作为标准

  • 方式二(抽取):

  • 将FeignClient抽取为独立模块,并且把接口有关的POJO、默认的Feign配置都放到这个模块中,提供给所有消费者使用

  • 抽取FeignClient方式实现

  • 1.首先创建一个module,命名为feign-api,然后引入feign的starter依赖
  • 2.将order-service中编写的UserClient、User、DefaultFeignConfiguration都剪切到feign-api项目中

  • 3.在order-service中引入feign-api的依赖

  • 4.修改order-service中的所有与上述三个组件有关的import部分,改成导入feign-api中的包

  • 5.重启测试

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

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

相关文章

MATLAB R2020a 与PreScan8.5.0 详细安装教程(图文版)

目录MATLAB安装PreScan安装每文一语MATLAB安装 MATLAB是一款数学软件,用于科学计算、数据分析和可视化等任务。以下是MATLAB的几个优势: 丰富的工具箱:MATLAB拥有多种工具箱,包括信号处理、图像处理、优化、控制系统等&#xff0…

深度学习论文: EdgeYOLO: An Edge-Real-Time Object Detector及其PyTorch实现

深度学习论文: EdgeYOLO: An Edge-Real-Time Object Detector及其PyTorch实现 EdgeYOLO: An Edge-Real-Time Object Detector PDF: https://arxiv.org/pdf/2302.07483.pdf PyTorch代码: https://github.com/shanglianlm0525/CvPytorch PyTorch代码: https://github.com/shangli…

SQL的四种连接-左外连接、右外连接、内连接、全连接

SQL的四种连接-左外连接、右外连接、内连接、全连接 内连接inner join…on… / join…on… 展现出来的是共同的数据 select m.Province,S.Name from member m inner join ShippingArea s on m.Provinces.ShippingAreaID; 相当于:select m.Province,S.Name from m…

Mybatis一对多查询 ,以及会遇到的各种问题解答

Mybatis一对多查询 ,以及会遇到的各种问题解答业务场景实体类,数据库方法1:连表查询,用ResultMap映射方法2:子查询进行映射业务场景 有时候前端需要表格里面嵌套表格的情况,用以展示更加详细的信息&#xf…

前端历史 --- 从HTML静态文件到前后端分离

前端历史 --- 从HTML静态文件到前后端分离1. 静态HTML2. 动态HTML --- 服务器端渲染CGI --- Common Gateway InterfaceservletASP, JSP, PHP服务器端渲染(SSR)3. 前后端分离 --- 客户端渲染JavaScriptAjax --- Asynchronous Javascript And Xml.客户端渲染1. 静态HTML 在上个世…

回溯问题(子集型回溯、组合型回溯、排列型回溯)【零神基础精讲】

来源0x3f:https://space.bilibili.com/206214 回溯分为【子集型回溯】【组合型回溯】【排列型回溯】 文章目录回溯基本概念[17. 电话号码的字母组合](https://leetcode.cn/problems/letter-combinations-of-a-phone-number/)子集型回溯(分割问题也可以看…

按键中断,红外、光电、火焰传感器中断控制LED等并打印信息

需求:按键中断,红外、光电、火焰传感器中断控制LED等并打印信息重写函数部分:void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin) {switch(GPIO_Pin){case GPIO_PIN_9:HAL_GPIO_TogglePin(GPIOE,GPIO_PIN_10);if(HAL_GPIO_ReadPin(GPIO…

浅析高速服务区交互一体机设备管理系统的建设与方向

很多高速公路服务区均缺乏现代化的服务思维、理念和手段,信息系统功能薄弱,服务区的自助服务终端存在功能单一、人机交互体验差、设备维护管理成本高、联动效率低、运营难等问题,这不仅无法支撑服务区的精细化服务和智能化管理需求&#xff0…

【视频】海康摄像头、NVR网络协议简介

1、软硬件整体架构 2、涉及的网络协议 3、协议简介 3.1 海康私有协议 设备发现SADP:进行设备的发现、激活、修改网络参数、忘记密码等; SDK:4200、系统平台的接入前端设备,协议不对外开放,但对外提供接口库; ISAPI:Intelligent Security API(智能安全API),基于HTTP传输…

C/C++每日一练(20230223)

目录 1. 数据合并 2. 回文链表 3. 完美矩形 1. 数据合并 题目描述 将两个从小到大排列的一维数组 (维长分别为 m,n , 其中 m,n≤100) 仍按从小到大的排列顺序合并到一个新的一维数组中,输出新的数组. 输入描述 第 1 行一个正整数 m , 表示第一个要合并的一维…

【数据结构】AVL树

AVL树一、AVL树的概念二、AVL的接口2.1 插入2.2 旋转2.2.1 左单旋2.2.2 右单旋2.2.3 左右双旋2.2.4 右左双旋三、验证四、源码一、AVL树的概念 当我们用普通的搜索树插入数据的时候,如果插入的数据是有序的,那么就退化成了一个链表,搜索效率…

纵然是在产业互联网的时代业已来临的大背景下,人们对于它的认识依然是短浅的

纵然是在产业互联网的时代业已来临的大背景下,人们对于它的认识依然是短浅的。这样一种认识的最为直接的结果,便是我们看到了各式各样的产业互联网平台的出现。如果一定要找到这些互联网平台的特点的话,以产业端为出发点,无疑是它…

嵌入式:UCOS移植+简单创建任务

目录 一、UCOS操作系统 二、UCOS移植 1、文件介绍 2、UCOS || 源码分析 3、打开Software文件 三、UCOS任务创建 一、UCOS操作系统 C/OS 是 Micrium 公司出品的实时操作系统, C/OS 目前有两个版本: C/OS-II 和 C/OS-III。 C/OS 是一种基于优先级…

Linux GPIO 开发指南

文章目录Linux GPIO 开发指南1 概述1.1 编写目的1.2 适用范围1.3 相关人员2 模块介绍2.1 模块功能介绍2.2 相关术语介绍2.3 总体框架2.4 state/pinmux/pinconfig2.5 源码结构介绍3 模块配置3.1 kernel menuconfig 配置3.2 device tree 源码结构和路径3.2.1 device tree 对 gpio…

Python计算 -- 内附蓝桥题:相乘

计算 ~~不定时更新🎃,上次更新:2023/02/23 🗡常用函数(方法) 1. 求一个整数的最末位 举个栗子🌰 n int(input()) end n % 10蓝桥例题1 - 相乘✖️ 题目描述 本题为填空题,…

MySQL 11:MySQL锁

锁是一种机制,计算机通过这种机制协调多个进程或线程对资源的并发访问(以避免争用)。在数据库中,除了传统的计算资源(如CPU、RAM、I/O等)的争夺外,数据也是一种被众多用户共享的资源。如何保证并…

叠氮炔点击化学634926-63-9,Propargyl-PEG1-NHBoc,氨基叔丁酯PEG1丙炔基相关性质分享

●外观以及性质:Propargyl-PEG1-NHBoc产物呈固体或粘性液体,取决于PEG分子量,包含1个丙炔基和一个氨基叔丁酯,炔丙基可通过铜催化的叠氮炔点击化学与含叠氮化合物或生物分子反应,以产生稳定的三唑键,带有 P…

Windows下载安装Redis的详细步骤

目录 一、概述 1.redis的版本维护介绍 2.msi安装包和压缩包的优点和缺点 二、操作步骤 三、测试是否安装成功(查看版本) 四、获取资源 一、概述 1.redis的版本维护介绍 Redis的官网只提供Linux系统的下载。但是微软的技术团队长期开发和维护着这…

Tina_Linux_启动优化_开发指南

文章目录Tina_Linux_启动优化_开发指南1 概述2 启动速度优化简介2.1 启动流程2.2 测量方法2.2.1 printk time2.2.2 initcall_debug2.2.3 bootgraph.2.2.4 bootchart2.2.5 gpio 示波器.2.2.6 grabserial.2.3 优化方法2.3.1 boot0启动优化2.3.1.1 非安全启动.2.3.1.2 安全启动2.3…

jmeter接口自动化测试框架

接口测试可以分为两部分: 一是线上接口(生产环境)自动化测试,需要自动定时执行,每5分钟自动执行一次,相当于每5分钟就检查一遍线上的接口是否正常,有异常能够及时发现,不至于影响用…