SpringBoot统一功能处理

article/2025/7/12 23:43:51

1.拦截器                                                                                                                                                  拦截器是Spring框架提供的核心功能之一,主要是用来拦截用户的请求,在指定方法前后,根据业务需要执行预先设定的代码.允许开发人员提前预定一些逻辑,在用户的请求响应前后执行,也可以在用户请求前组织其执行.在拦截器当中,开发人员可以在应用程序中做一些通用性的操作,比如通过拦截器来拦截前端发来的请求,判断session中是否有登录用户的信息,如果有就可以放行,如果没有就进行拦截.1.1拦截器的使用:主要分为两步,定义拦截器和注册配置拦截器.首先是自定义拦截器:实现HandlerInterceptor接口,并重写其所有方法.          注册配置拦截器:实现WebMvcConfigurer接口,并重写addInterceptors方法.   这里执行访问           日志显示如下:        可以看到是执行了LoginInterceptor方法的,这里把preHandle方法的返回值改为false观察日志.         可以看到这里只执行了preHandle方法,并且前端也没有显示测试.说明拦截器拦截了请求,没有进行响应.

1.2拦截器详解:定义拦截器主要是通过实现HandlerInterceptor接口中的方法实现的.前面只是简单的把拦截路径设置为对所有请求,下面进行详细的解释: 通过addPathPatterns()方法指定要拦截那些请求,通过excludePathPatterns()指定不拦截那些请求. 下面是一些说明

拦截路径含义例子
/*一级路径可以匹配类外的@RequestMapping()中的所有路径
/**任意路径可以匹配任意路径
/test/*/test下的一级路径可以匹配/test/test1,不可以匹配/test,/test/test1/t
/test/**/test下的任意级路径可以匹配以test为一级路径的所有请求

拦截器并不仅仅对于使用注解的路径生效,可以拦截项目中的所有URL,包括静态文件,如JS,CSS等文件.

1.3拦截器的执行流程

    添加拦截器之后,在执行Controller的方法之前,请求会先被拦截器拦截住,执行preHandle()方法,这个方法需要返回一个布尔类型的值,如果返回true,表示执行本次操作,继续访问Controller中的方法,如果返回false,则不会执行放行. 在Controller当中的方法执行完毕后,再回来执行postHandle()这个方法以及afterCompletion()方法,执行完毕之后,最终给浏览器响应数据.拦截器在保证项目的安全性方法有广泛的应用.

2.统一异常处理:统一异常处理使用的是@ControllerAdvice+@ExceptionHandler来实现的.@ControllerAdvice表示控制器通知类,@ExceptionHandler是异常处理类,两个结合表示当出现异常的时候执行某个通知.下面是一个简单的统一异常处理:
做一个简单的测试:

访问这个方法,可以发现前端显示了错误信息:                   这只是一个简单的处理,也可以使用多个@ExceptionHandler(异常处理器)对不同的异常进行处理.  这里是针对几种异常,返回对应的异常信息.当有多个异常通知时,匹配顺序为当前类及其子类向上依次匹配.

当然实际中,这里的返回一定不是简单的返回异常信息,通常会有统一的结果返回.

3.统一结果返回,和异常处理类似.使用@ControllerAdvice和ResponseBodyAdvice的方式实现.@ControllerAdvice表示控制器通知类.ResponseBodyAdvice是一个接口.下面是一个例子:注意如果返回的数据是String类型是需要转化成json.

                                                                       


http://www.hkcw.cn/article/qqcNNboEsL.shtml

相关文章

prometheus v3.4.1正式发布!解析全新特性与安装指南,打造高效云原生监控体系

一、引言 随着云原生时代的快速发展,监控系统成为保障业务平稳运行的核心利器。作为CNCF(Cloud Native Computing Foundation)旗下的开源监控项目,Prometheus凭借其卓越的多维数据模型、灵活强大的查询语言及自主运行的架构设计&a…

PCA(K-L变换)人脸识别(python实现)

数据集分析 ORL数据集, 总共40个人,每个人拍摄10张人脸照片 照片格式为灰度图像,尺寸112 * 92 特点: 图像质量高,无需灰度运算、去噪等预处理 人脸已经位于图像正中央,但部分图像角度倾斜(可…

资源预加载+懒加载组合拳:从I/O拖慢到首帧渲染的全面优化方案

简介 在移动应用开发领域,首帧渲染性能已成为用户体验的关键指标之一。根据2025年最新行业数据,首屏加载时间每延迟1秒,用户跳出率可能增加32%,直接影响应用评分和留存率。当应用启动时,布局解析、图片解码等I/O操作往往成为首帧渲染的主要瓶颈,导致用户看到白屏或黑屏时…

【Doris基础】Apache Doris中的Coordinator节点作用详解

目录 1 Doris架构概述 2 Coordinator节点的核心作用 2.1 查询协调与调度 2.2 执行计划生成与优化 2.3 资源管理与负载均衡 2.4 容错与故障恢复 3 Coordinator节点的关键实现机制 3.1 两阶段执行模型 3.2 流水线执行引擎 3.3 分布式事务管理 4 Coordinator节点的高可…

【基于阿里云搭建数据仓库(离线)】IDEA导出Jar包(包括第三方依赖)

1.双击"package”即可进行打包呈jar 2.双击后就会自动打包生成jar了, 生成的jar在这个目录下 3.右击,点击“复制路径/引用”,即可获得“绝对路径”、“根路径”等相关信息

id()函数:窥探Python变量内存地址的奥秘

在Python程序设计中,变量、对象和内存是紧密相连的核心概念。理解变量的内存地址,是理解Python变量本质、内存管理与性能优化的关键。Python内置函数id(),作为变量与对象身份(identity)的“指纹识别器”,为…

MySQL中的事务

事物特性 原子性:事物时最小的执行单位,不允许分割。事物的原子性确保动作要么全部完成,要么完全不起作用,如果在执行过程中发生错误,会被回滚到事物开始前的状态,就像这个事务从来没有执行过一样。一致性&#xff1a…

像素转换案例实战

本案例介绍像素单位的基本知识与像素单位转换API的使用。通过像素转换案例,向开发者讲解了如何使用像素单位设置组件的尺寸、字体的大小以及不同像素单位之间的转换方法。主要功能包括: 展示了不同像素单位的使用。展示了像素单位转换相关API的使用。 …

结构型设计模式之桥接模式

文章目录 1. 桥接模式概述2. 模式结构3. 桥接模式的优缺点优点缺点 4. 桥接模式的应用场景5. C#代码示例5.1 简单示例 - 形状与颜色5.2 更复杂的示例 - 跨平台消息发送系统 6. 桥接模式与其他模式的比较7. 真实世界中的桥接模式应用7.1 数据库驱动7.2 UI框架中的渲染机制 8. 桥…

RAG系统中如何检测幻觉?

虽然我们的 RAG 系统通过将答案基于真实的医学证据来减少幻觉,但我们发现了一个关键的差距:即使有引用,系统仍然可能产生不可靠的输出。 想想看:仅仅因为一个系统可以引用来源,并不意味着它正确地使用了这些来源。 模型可能会: 从检索到的文档中提取不相关的信息不适当…

world quant教程学习

Understanding Corporate Fundamental Data 🔍 了解企业基本面数据 Lets explore fundamental data😊 Fundamentals capture the underlying business, financial and operational health of a company, usually reported every quarter. This data is t…

详解鸿蒙仓颉开发语言中的计时器

今天又到了大家喜闻乐见的科普环节,也可以说是踩坑环节,哈哈哈。今天聊一聊仓颉开发语言中的计时器,这部分可老有意思了。 为什么这么说呢,因为关于仓颉的计时器你几乎搜不到任何的文档,也没有相关的代码提示&#xf…

70多套创业商业融资计划书PPT模板分享

70多套创业商业融资计划书PPT模板分享,商业计划书、融资计划书为主的欧美风格PPT模板。 70多套创业商业融资计划书PPT模板分享:创业商业融资计划书PPT模板https://pan.quark.cn/s/e09456cd487b

基于 StarRocks + Iceberg,TRM Labs 构建 PB 级数据分析平台实践

作者: Vijay Shekhawat:TRM Labs 数据平台团队核心成员,精通实时流处理、数据湖仓架构及构建安全、高吞吐的数据分析管道,在推动 PB 级数据处理能力方面发挥了关键作用。 Andrew Fisher:TRM Labs 资深软件工程师&…

Python----目标检测(使用YOLO 模型进行线程安全推理和流媒体源)

一、线程安全推理 在多线程环境中运行YOLO 模型需要仔细考虑,以确保线程安全。Pythons threading 模块允许您同时运行多个线程,但在这些线程中使用YOLO 模型时,需要注意一些重要的安全问题。本页将指导您创建线程安全的YOLO 模型推理。 1.1、…

机器学习知识图谱——朴素贝叶斯算法

目录 一、图解朴素贝叶斯算法知识图谱 二、基本概念 三、核心思想 四、为什么叫“朴素”? 五、算法流程图 六、常见模型类型 七、优点 与 缺点 八、实战代码 (以文本分类为例) 九、应用举例 机器学习知识图谱——朴素贝叶斯算法 一、图解朴素贝叶斯算法知识图谱 该…

ollama+open-webui,本地部署自己的大模型

目录 一、效果预览 二、部署ollama 1.ollama说明 2.安装流程 2.1 windows系统 2.1.1下载安装包 2.1.2验证安装结果 2.1.3设置模型文件保存地址 2.1.4拉取大模型镜像 2.2linux系统 2.2.1下载并安装ollama 2.2.2设置环境变量 2.2.3拉取模型文件 三、部署open-webui…

大模型赋能:2D 写实数字人开启实时交互新时代

在数字化浪潮席卷全球的当下,人工智能技术不断突破创新,其中大模型驱动的 2D 写实数字人正成为实时交互领域的一颗新星,引领着行业变革,为人们带来前所未有的交互体验。 一、2D 写实数字人概述 2D 写实数字人是通过计算机图形学…

效率工具- git rebase 全解

一、前言 对于git rebase 一直不太了解,这几天想着提高下git提交质量,就发现了这个好用的指令,顺便记录一下,好加深记忆 贴出官方文档以便大家进一步学习 Git 二、rebase是作用 rebase 官方解释为变基,可以理解为移动你的分支根节点,维护一个更好的提交记录。rebase把你当前…

【开源】Python打造高效剪贴板历史管理器:实现跨平台生产力工具

📋【开源】Python打造高效剪贴板历史管理器:实现跨平台生产力工具 🌈 个人主页:创客白泽 - CSDN博客 🔥 系列专栏:🐍《Python开源项目实战》 💡 热爱不止于代码,热情源自…