【Spring Boot 3】自定义拦截器

【Spring Boot 3】自定义拦截器

  • 背景
  • 介绍
  • 开发环境
  • 开发步骤及源码
  • 工程目录结构
  • 总结

背景

软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习新技术总是要花费或多或少的时间、检索不止一篇资料才能得出一个可工作的DEMO,这占用了我大量的时间精力。因此本文旨在通过一篇文章即能还原出可工作的、甚至可用于生产的DEMO,期望初学者能尽快地迈过0到1的这一步骤,并在此基础上不断深化对相关知识的理解。
为达以上目的,本文会将开发环境、工程目录结构、开发步骤及源码尽量全面地展现出来,文字描述能简则简,能用代码注释的绝不在正文中再啰嗦一遍,正文仅对必要且关键的信息做重点描述。

介绍

本文介绍开发 Spring Boot 应用如何自定义拦截器(Interceptor)实现。

Spring Boot 拦截器(Interceptor)基于 Java 反射机制实现,可以对 Controller 中方法进行拦截,并在方法执行前后进行相应处理,是基于切面编程(AOP)的一种模式。拦截器(Interceptor)通常的应用场景包括:

  • 权限校验
  • 日志记录
  • 性能监控

拦截器(Interceptor)通常拿来与过滤器(Filter)进行比较,虽然它们在应用上存在诸多重叠,但实现原理完全不同。过滤器基于 Servlet 规范,可对所有 Servlet 请求进行预处理或后处理。过滤器(Filter)通常的应用场景包括:

  • 编码转换
  • 安全校验
  • 请求链路跟踪

拦截器(Interceptor)与过滤器(Filter)的关键区别:

  • 过滤器(Filter)主要作用在 Servlet 生命周期的各环节中,用于处理网络请求;
  • 拦截器(Interceptor)作用范围不局限于网络请求,作用于具体业务方法,粒度更细。

从下图中可以看出拦截器(Interceptor)与过滤器(Filter)的作用顺序。
在这里插入图片描述

开发环境

分类名称版本
操作系统WindowsWindows 11
JDKOracle JDK21.0.1
IDEIntelliJ IDEA2023.3.7
构建工具Apache Maven3.9.9

开发步骤及源码

1> 创建Maven工程,添加依赖。

<?xml version="1.

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

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

相关文章

Prometheus_0基础_学习笔记

一、基本概念 Prometheus是由golang语言开发的一套开源的监控、报警、时间序列数据库的组合&#xff0c;是一款基于时序数据库的开源监控告警系统。 时间序列数据库&#xff1a;时间序列数据库&#xff08;Time Serires Database , TSDB&#xff09;不同于传统的关系型数据库。…

idea如何高亮、标记代码颜色的2种方式

zihao 第一种高亮方式 ctrlf 双击选择执行快捷键&#xff0c;所有被搜索的单词都会被搜索且高亮 第二种高亮方式 安装grep console 日志管理插件 ctrlaltf3 双击选择执行快捷键&#xff0c;所有被标记一个颜色高亮

银行卡二三四要素验证-银行卡二三四要素验证接口-银行卡二三四要素验证api

1、接口介绍 银行卡二三四要素验证接口是一种用于验证用户银行卡信息真实性和有效性的技术接口。这种接口在金融、电商等领域有着广泛的应用&#xff0c;旨在确保交易的安全性和合规性。 2、接口地址 全面覆盖&#xff0c;支持所有带银联标识的银行卡; 高准确性-验证结果实时返…

Kubernetes Secret的三种使用方式

Kubernetes Secret的三种使用方式 1、方式一:通过Service Account自动使用2、方式二:挂载Secret到Pod3、方式三:在Docker镜像下载时使用💖The Begin💖点点关注,收藏不迷路💖 在Kubernetes中,Secret是管理敏感信息的利器。创建Secret后,我们可以通过以下三种简洁的方…

RabbitMQ 入门:基本概念、特性及简单示例

什么是 RabbitMQ&#xff1f; RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。它支持多种消息协议&#xff0c;包括 AMQP 0-9-1&#xff0c;并提供了可靠性、灵活的路由、消息持久性等功能。RabbitMQ 是易于使用的&#xff0c;支持多种编程语言&a…

科技型中小企业怎么做

在当今快速发展的科技时代&#xff0c;科技型中小企业扮演着越来越重要的角色。这些企业不仅推动了技术创新&#xff0c;还为经济增长和社会进步做出了巨大贡献。那么&#xff0c;科技型中小企业应如何制定并执行其发展战略呢&#xff1f; 1. 明确定位与战略规划 对于任何企业…

云服务器+docker:还在为项目上线苦恼?一文包你解决(保姆级教程,图文并茂,万字起步!!!)

目录 Blue留言机&#xff1a; 学习视频以及参考资料 &#xff1a; 1、学习之前的必备操作&#xff1a; 第一步&#xff1a;购买服务器 选择一台免费的云服务器&#xff08;包白嫖的&#xff09; 配置服务器的一点说明&#xff1a; 查看自己是否购买成功&#xff1a; 第…

docker制作达梦数据库驱动的Python镜像记录

docker制作达梦数据库驱动的Python镜像记录 使用Sqlalchemy ORM 操作达梦 提供构建好的docker镜像 docker pull chongjing001/python:3.12 使用虚拟环境(source /venv/bin/activate) 后pip其他库 镜像中安装Python参考上一篇 下载DM8安装包 版本选择 官网 Linux安装包只有 r…

Python基础笔记

一、python基础1.1 基础知识1.1.1 注释 注释&#xff1a;在程序中对程序代码进行解释说明的文字。 作用&#xff1a;注释不是程序&#xff0c;不能被执行&#xff0c;只是对程序代码进行解释说明&#xff0c;让别人可以看懂程序代码的作用&#xff0c;能够大大增强程序的可读性…

前端按钮通过浏览器下载附件

html <a click"downloadAttach(record.memoryAddress)">下载附件</a> js downloadAttach(url){var fileUrl window._CONFIG[staticDomainURL] url;window.open(fileUrl); } 配置文件 window._CONFIG[staticDomainURL] http://127.0.0.1:3000/xxx…

学习笔记 ---- 莫比乌斯反演总结

文章目录 概述前置知识数论分块狄利克雷卷积积性函数 莫比乌斯函数定义性质 莫比乌斯反演因子形式倍数形式 例题周期性字符串互质数对[NOI2010D1T1]能量采集BZOJ2820 YY的GCD[SDOI2015] 约数个数和BZOJ4407 于神之怒加强版【BZOJ2693】jzptab最小公倍数之和[bzoj3529-Sdoi2014]…

【web安全】SQL注入篇

&#x1f3d8;️个人主页&#xff1a; 点燃银河尽头的篝火(●’◡’●) 如果文章有帮到你的话记得点赞&#x1f44d;收藏&#x1f497;支持一下哦 【web安全】SQL注入篇 SQL注入漏洞基础SQL注入分类判断注入点1. 区分请求类型&#xff08;get、post&#xff09;2. 判断是否存在…

当采用 JSON 格式的数据进行响应时,对象是否需要序列化取决于什么?

目录 1.使用 JSON 库进行序列化 2.使用 Java 的默认序列化机制 当采用 JSON 格式的数据进行响应时&#xff0c;对象是否需要序列化取决于你是如何将对象转换为 JSON 格式的。在Java中有两种情况&#xff1a; 1.使用 JSON 库进行序列化 如果你使用的是像 Jackson、Gson 或 F…

基于yolov8的红绿灯目标检测训练与Streamlit部署(代码+教程)

项目背景 随着智能交通系统的快速发展&#xff0c;自动驾驶技术逐渐成为研究的热点。在自动驾驶领域中&#xff0c;准确识别道路上的交通信号灯是确保车辆安全行驶的关键技术之一。近年来&#xff0c;深度学习技术的发展为交通信号灯的识别提供了强大的支持。YOLO&#xff08;…

集成电路学习:什么是I/O输入输出

I/O&#xff1a;输入输出 I/O&#xff0c;全称Input/Output&#xff0c;即输入输出&#xff0c;是信息处理系统&#xff08;如计算机&#xff09;与外部世界&#xff08;可能是人类或另一信息处理系统&#xff09;之间的通信方式。具体来说&#xff0c;输入是系统接收的信号或数…

几款免费的时序数据库对比

InfluxDB、TDengine、OpenTSDB、QuestDB都是当前主流的时序数据库&#xff0c;它们在性能、功能、适用场景等方面各有特点。下面将从多个维度对这四个数据库进行对比分析&#xff1a; 一、性能 InfluxDB&#xff1a; 高效的时间序列数据写入性能&#xff0c;自定义TSM引擎&am…

【Java那些事】关于Git的使用

目录 下拉代码仓库篇 上传代码篇 下拉代码仓库篇 第一步&#xff0c;下拉代码&#xff0c;复制链接。 &#xff08;从开源网站上复制链接&#xff09; &#xff08;建立本地仓库&#xff09; 这里的URL一般都会自动填充刚刚复制的链接【瞅瞅&#xff0c;确保是想要的那个项…

MATLAB中的线性规划与非线性规划

目录 1. 引言 2. 线性规划&#xff08;LP&#xff09; 2.1 线性规划的基本概念 2.2 MATLAB中的线性规划求解 2.3 线性规划的应用 3. 非线性规划&#xff08;NLP&#xff09; 3.1 非线性规划的基本概念 3.2 MATLAB中的非线性规划求解 3.3 非线性规划的应用 4. 线性规划…

如何在 Linux Terminal 中使用 Cmd+C复制,Cmd+V粘帖?

Fact&#xff1a; Linux 里&#xff0c;CtrlC 被很早用于 kill 当前 terminal 中运行的进程。因为历史原因&#xff0c;Linux 发行版里&#xff0c;没有 Command 键 【历史背景】Mac 中用 CtrlC kill 进程&#xff0c;使用 CmdC执行复制通常&#xff0c;Mac 的 Linux 虚拟机里…

安防监控视频平台LntonAIServer视频智能分析平台新增视频质量诊断功能

随着安防行业的快速发展&#xff0c;视频监控系统已经成为维护公共安全和个人隐私的重要工具。然而&#xff0c;由于各种因素的影响&#xff0c;视频流的质量可能会受到影响&#xff0c;从而导致监控效果不佳。为了解决这一问题&#xff0c;LntonAIServer推出了全新的视频质量诊…