Spring Cloud OpenFeign - - - >拦截器

news2025/1/23 13:11:23

源码地址: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());
    
    
    @Override
    public 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 {

    // 日志级别配置
    @Bean
    public Logger.Level feignLoggerLevel(){
        return Logger.Level.FULL;
    }


    // 自定义拦截器
    @Bean
    public 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());
    
    
    @Override
    public 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.coloradmin.cn/o/47065.html

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

相关文章

虹科分享 | 麦氏比浊仪在药敏试验中的应用

细菌是重要的病原微生物,人类针对不同的病原菌研发了各类抗菌药,这些药物对细菌性疾病的治疗与控制起到了关键作用。然而随着新型致病菌的不断出现,加上细菌在药物使用过程中逐渐产生了耐药性,抗菌药的防治效果越来越差。病原菌对…

Python 中的类与继承

类的定义以及实例的建立 Python中,类通过 class 关键字定义。 例如最简单的一个类定义可以为: class Person(object):pass Python 的编程习惯,类名以大写字母开头,紧接着是(object),表示该类是从哪个类继承下来的。…

解决单文件组件里的跨域请求数据问题(使用vue单文件组件请求数据必会遇到的问题!!!)

为什么要解决跨域问题: 因为浏览器有限制,只有同域名同端口号下的数据才能拿来用;那如果想拿到不同域名不同端口号下的数据就不行了; 在单文件组件中如何去解决跨域问题: 因为服务器没有跨域限制,只有浏览…

PyTorch(四)Torchvision 与 Transforms

文章目录Log一、Torchvision1. CIFAR10① 介绍② 使用2. 与 Transforms 结合使用总结Log 2022.11.28接着开启新的一章2022.11.29继续学习 一、Torchvision 视频教程中 Torchvision v0.9.0文档Torchvision 官方文档Torchvision Datasets API 文档 1. CIFAR10 ① 介绍 CIFAR…

HBuilder X实现banner轮播图

第一步还是去仔细阅读官方文档,找到组件下面的内置组件里面的swiper,如图所示 官方是提供了一个用来制作轮播图的滑块视图容器:swiper 一般来说,轮播图的图片地址是由后端返回给前端遍历显示在页面上的,所以基本的结构…

世界杯的“中国元素”昂扬大国担当,点面科技全新推出的多模态多功能移动终端踏上卡塔尔征途!

本次世界杯中国足球队没有参加,但是在世界杯的赛场上到处都有中国元素。 中国承建的卢赛尔体育场 卡塔尔世界杯主体育场——卢赛尔球场由中国铁建以总承包身份承建,引发了全球瞩目。在本届世界杯赛事中,该场馆将承担包括决赛在内的10场比赛&…

idea手动创建webapp(在main文件夹下)

SSM自学笔记 文章目录一、Maven使用正常情况首先不使用骨架创建好Maven项目然后选择Project Structure...选择要创建webapp的模块修改路径二、Maven不正常工作时一、Maven使用正常情况 首先不使用骨架创建好Maven项目 然后选择Project Structure… 选择要创建webapp的模块 选好…

前置微小信号放大器在光声技术的血管识别研究中的应用

实验名称:前置微小信号放大器在光声技术的血管识别研究中的应用 研究方向:生物识别技术 测试目的: 利用MATLAB对光声血管进行识别:1、对光声血管图库的图像进行预处理包括归一化、二值化、平滑、细化和毛刺修剪得到细化图像&#…

0109 蓝桥杯真题12

/* * 观察下面的现象,某个数字的立方,按位累加仍然等于自身。 * 1^3 1 * 8^3 512 5128 * 17^3 4913 491317 ... *请你计算包括1,8,17在内,符合这个性质的正整数一共有多少个? *填写该数字,不要填写任何多余的内…

【DevPress】V2.4.3版本发布,增加内容收录管理

DevPress V2.4.3版本于2022年11月10日发版,增加内容收录模块,方便用户内容收录。 一、该版本功能包含 1、新需求 1)控制台增加内容收录管理模块,包括收录内容额度管理、自动收录功能、基于内容搜索做收录以及收录内容列表。 - …

凯利公式 - Kelly formula

欢迎关注沉睡者IT,点上面关注我 ↑ ↑ 凯利公式的概述 凯利公式是一条可应用在投资资金和赌注的公式。应用于多次的随机赌博游戏,资金的期望增长率最高,且永远不会导致完全损失所有资金的后果。它假设赌博可无限次进行,而且没有下…

Netty进阶——粘包与半包(滑动窗口)

TCP 以一个段(segment)为单位,每发送一个段就需要进行一次确认应答(ack)处理,但如果这么做,缺点是包的往返时间越长性能就越差。 为了解决此问题,引入了窗口概念,窗口大小…

微慕积分商城插件

微信小程序专业版在第一个正式版发布的时候,就推出了积分系统。用户登录小程序、签到、发表文章、评论文章、发表话题、回复话题、点赞、赞赏、付费阅读后都可以获得相应的积分。但这个积分攒了足够多后,有什么用呢?可以用于积分阅读文章&…

论文代码测试

一、代码所属论文 1. Document Image Enhancement with GANs - TPAMI journal 代码中的介绍提供了处理四种情况的模型,这四种模型功能分别为 : 1)二值化图片文字; 2)清晰化图片中模糊文字; 3)去除图片水印; 4&…

FPGA----ZCU106基于axi-hp通道的pl与ps数据交互(全网唯一最详)

1、大家好,今天给大家带来的内容是,基于AXI4协议的采用AXI-HP通道完成PL侧数据发送至PS侧(PS侧数据发送至PL侧并没有实现,但是保留了PL读取PS测数据的接口) 2、如果大家用到SoC这种高级功能,那大家应该对于…

系列ML.Net 学习篇【一】——初识机器学习

由于公司项目涉及到机器学习和图像识别,虽然我并不是算法专家,但毕竟需要了解和知道其运转原理,因此自我进行了学习进化,决定在机器学习上有所进展,结合.NET技术的ML.NET,把机器学习的技能提升一个Level,如果你也有兴趣…

vue学习31~39(列表过滤+列表排序+vue检测data中的数据+收集表单数据+过滤器)

1.14 列表过滤 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-wid…

VM虚拟机三种网络配置详解(桥接、NAT、仅主机)

在学习网络配置之前&#xff0c;需要搞明白有关于网络的一些基本概念&#xff0c;什么是ip&#xff0c;子网掩码&#xff0c;网段&#xff0c;网关&#xff1f;这里只做最简单的解释&#xff0c;实际上远远不止这些。 网络名词 ip 在现实生活中&#xff0c;这么大的一个中国…

bootstrap标签和导航条件组件学习(七)

标签和导航条件组件 这里的标签是不能切换的&#xff0c;它是静态的&#xff0c;在JavaScrapt插件里面是是可以切换页面的 需要配合插件 加选中状态&#xff1a; 它是自适应屏幕宽度&#xff1a; 胶囊式标签下拉菜单&#xff1a; 复制代码放到页面中&#xff1a; div 的class…

KubeEdge设备接入的mqtt调试

kubeedge的设备接入是用mqtt进行转接的。但是如果遇到一些问题需要排查问题时&#xff0c;希望可以查看终端发的mqtt消息。 目前 mosquitto 没有看到有进行消息查看的机制&#xff08;也可能我不知道&#xff09; EMQ可以进行消息查看。 1.安装EMQ 快速开始 | EMQX 5.0 文…