Spring Cloud OpenFeign - - - >拦截器

news/2024/4/24 14:10:55/文章来源:https://blog.csdn.net/weixin_42950079/article/details/128082947

源码地址:https://download.csdn.net/download/weixin_42950079/87209379



SpringMVC拦截器 和 OpenFeign拦截器 的区别

cd

初学者很容易将 Spring MVC 拦截器 和 Spring Cloud OpenFeign 拦截器搞混,误以为OpenFeign拦截器就是SpringMVC拦截器:

  • Spring MVC拦截器发生在客户端服务端之间,在客户端向服务端发送请求时进行拦截处理。

  • Spring Cloud OpenFeign拦截器发生在两个不同的服务之间,在服务消费端发送请求远程调用服务提供方时进行拦截处理。


OpenFeign拦截器

OpenFeign拦截器有两种配置方式:

  • java方式配置

  • application.yml配置文件中配置


java方式配置

  • 1、创建自定义拦截器类,并实现 RequestInterceptor 拦截器接口。
import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class OpenFeignRequestInterceptor implements RequestInterceptor {Logger logger = LoggerFactory.getLogger(this.getClass());@Overridepublic void apply(RequestTemplate requestTemplate) {// Todo/*** 根据需求可以在拦截器中扩展需要的功能:*   1、日志记录*   2、设置请求头   requestTemplate.header("xxx", "xxx");*   3、增加参数*   4、修改请求参数 / 修改路径*   5、权限鉴定*   . . .*/logger.info("OpenFeign拦截器 . . .");}
}
  • 2、在配置类中 注入 自定义拦截器类( Bean )
import com.cd.order8010.feign.interceptor.OpenFeignRequestInterceptor;
import feign.Logger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** 全局配置:加了@Configuration注解表示全局配置,对所有服务起作用* 局部配置:不加@Configuration注解表示局部配置,只针对指定的一个服务起作用,需要在 OpenFeign 接口的@FeignClient注解中,通过configuration属性中指定 OpenFeign 的扩展配置类*/
@Configuration
public class OpenFeignConfig {// 日志级别配置@Beanpublic Logger.Level feignLoggerLevel(){return Logger.Level.FULL;}// 自定义拦截器@Beanpublic OpenFeignRequestInterceptor openFeignRequestInterceptor(){return new OpenFeignRequestInterceptor();}
}



application.yml配置文件中配置

  • 1、创建自定义拦截器类,并实现 RequestInterceptor 拦截器接口。
import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class OpenFeignRequestInterceptor implements RequestInterceptor {Logger logger = LoggerFactory.getLogger(this.getClass());@Overridepublic void apply(RequestTemplate requestTemplate) {// Todo/*** 根据需求可以在拦截器中扩展需要的功能:*   1、日志记录*   2、设置请求头   requestTemplate.header("xxx", "xxx");*   3、增加参数*   4、修改请求参数 / 修改路径*   5、权限鉴定*   . . .*/logger.info("OpenFeign拦截器 . . .");}
}
  • 2、在application.yml配置文件中指定我们创建的自定义OpenFeign拦截器类。
feign:client:config:stock-service:  # 这里写default就是全局配置。如果是写服务名称(如:stock-service),则是针对某个微服务的配置,即局部配置logger-level: BASIC  #日志级别request-interceptors: #自定义拦截器- com.cd.order8010.feign.interceptor.OpenFeignRequestInterceptor

cd



测试

在这里插入图片描述

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

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

相关文章

Kotlin高仿微信-第9篇-单聊-文本

Kotlin高仿微信-项目实践58篇详细讲解了各个功能点,包括:注册、登录、主页、单聊(文本、表情、语音、图片、小视频、视频通话、语音通话、红包、转账)、群聊、个人信息、朋友圈、支付服务、扫一扫、搜索好友、添加好友、开通VIP等众多功能。 Kotlin高仿…

Spark系列之Spark的数据倾斜

title: Spark系列 第九章 Spark的数据倾斜 9.1 Spark调优概述 ​ 有的时候,我们可能会遇到大数据计算中一个最棘手的问题——数据倾斜,此时 Spark 作业的性能会比期望差很多。数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题…

2022腾讯全球数字生态大会【存储专场】它来了|预约有礼

它来了!它来了! 2022腾讯全球数字生态大会【存储专场】它来了! 作为腾讯集团产业互联网规格最高、规模最大、覆盖面最广的年度盛会 今年存储专场与您一起探讨 分布式高性能存储与数据分析处理的科技创新和最新成果 存储会场六大亮点&…

PyQt5可视化编程-事件、信号和对话框

一、概述: 所有的应用都是事件驱动的。事件大部分都是由用户的行为产生的,当然也有其他的事件产生方式,比如网络的连接,窗口管理器或者定时器等。调用应用的exec_()方法时,应用会进入主循环,主循环会监听和分发事件。…

【SpringBoot】对于yaml的详细学习和三种属性赋值的实战详解

一.yaml详细讲解 1.1 什么是yaml? YAML是一种数据序列化语言,通常用于编写配置文件。业界对YAML有不同的看法。有些人会说YAML代表另一种标记语言。其他人认为“YAML不是标记语言”(“YAML并非标记语言”)。“YAML”只是这句话的…

CDMP选修课都有什么?

大家都知道CDMP认证考试有四个级别。分别是A级(基础级)P级(实践级)M级(专业级)F级(大师级)。级别越高,考试难度就越大,分数比例要求也更高,相对应…

Unity ab包加载文本 puerts 自定义loader

输出ab包 他会把你创建的ab包都打包 也就是在这里的创建的 string assetBundleDirectory Path.Combine(Application.streamingAssetsPath, "OutAssetBundles"); if (!Directory.Exists(assetBundleDirectory)) {Directory.CreateDirectory(assetBundleDirectory);…

【HIT-OSLAB-实验中的碎碎念】

文章目录应该养成的好习惯删除 替换 修改 内容时 记得留备份遇到问题要通过文字 图片 等多种途径去记录不同的项目应该在不同的文件夹进行处理代码文档 记得添加一些注释用于说明功能多输出有区别度的提示信息s找bug 先定位错误 再改当一份代码有不同版本的时候 记得说明每份代…

黎曼的几何基础,维度

黎曼的几何基础,让数学领先物理100年,维度是人类最大的障碍 - 知乎 高斯很早就有了“高维几何”的想法,他曾经向他的同事们说起假想完全生活在二维表面上的“书虫”,并想要把这推广到高维空间的几何学中去。然而,由于害…

进程与信号(三)

目录 一、前言 二、Signals 1、Signal Handling(ctrlc.c) 2、Sending Signals (1)alarm.c (2)A Robust Signals Interface (3)ctrlc2.c 3、Signal Sets (1&…

ConstraintLayout布局扩展

相信大家对ConstraintLayout(约束布局)不陌生,这是google推出的一个强大控件,之所以强大其实主要归纳有两点:减少布局层次,能够轻松实现复杂布局。当然在我们实际使用过程中,是否真的减少了布局层次&#x…

FPGA实现图像对比度自动调整,提供2套工程源码和技术支持

目录1.算法原理介绍2.HLS算法实现3.工程1介绍:zynq7100实现4.工程2介绍:Kintex7实现5.上板调试验证6.福利:工程源码获取1.算法原理介绍 使用直方图均衡技术实现 使用直方图均衡技术将原始图像的灰度直方图从比较集中的某个灰度区间变成在全部…

ASCHIP_ISP Tool 工具 使用与更新

系列文章目录 ASCHIP-ISP Tool 版本1 2022 11 26ASCHIP-ISP Tool 版本1 使用说明 2022 11 26 软件介绍 对窗体进行初步配置,配置其大小与显示 一:软件介绍 ASCHIP_ISP Tool 工具是用于具有 ISP 功能型号类型的单片机进行 ISP 更新程序开发实验的配套上位…

[附源码]Python计算机毕业设计SSM隆庆祥企业服装销售管理系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【网络编程】第二章 网络套接字(socket+UDP协议程序)

🏆个人主页:企鹅不叫的博客 ​ 🌈专栏 C语言初阶和进阶C项目Leetcode刷题初阶数据结构与算法C初阶和进阶《深入理解计算机操作系统》《高质量C/C编程》Linux ⭐️ 博主码云gitee链接:代码仓库地址 ⚡若有帮助可以【关注点赞收藏】…

Java-泛型实验

1.定义一个学生类Student,具有年龄age和姓名name两个属性,并通过实现Comparable接口提供比较规则(返回两个学生的年龄差), 定义测试类Test,在测试类中定义测试方法Comparable getMax(Comparable c1, Compar…

Docker-JenKins安装及配置!

Jenkins官网:Jenkins 安装主机配置(官方): 最低: 256 MB 内存 1 GB 的驱动器空间(尽管如果将 Jenkins 作为 Docker 容器运行,则建议至少 10 GB) 小团队推荐: 4 GB …

英文ppt怎么翻译成中文?教你几种ppt翻译方法

ppt文件受到很多人的喜欢是因为它展示起来直观清晰,无论是老师在课堂上使用ppt课件来教学,还是在工作汇报中用ppt文件展示设计的方案或取得的成果。但当我们需要把ppt文档里的文本内容里的外语翻译成中文的时候,我们应该怎么做呢?…

003. 电话号码的字母组合——回溯算法

1.题目链接: 17. 电话号码的字母组合 2.解题思路: 2.1.题目要求: 给定一个仅包含数字 2-9 的字符串 digits ,返回所有它能表示的字母组合。 数字和字母的关系: 例子: 输入:"23" …

[Spring]第二篇:IOC控制反转

简单的说就是,创建对象的权利,或者是控制的位置,由JAVA代码转移到spring容器,由spring的容器控制对象的创建,就是控制反转. spring创建对象时,会读取配置文件,配置文件中主要配置接口和实现类的关系,每个接口对相应一个实现类,使用<bean>标签配置,<bean中的id可以随便…