基于@ControllerAdvice的全局异常处理

进入Controller前的异常 和 Service 层异常

在这里插入图片描述

@ControllerAdvice:

范围: 全局,适用于所有控制器。
目的: 用于全局配置异常处理和提供全局模型属性。
方法: 在带有 @ControllerAdvice 注解的类中的被注解方法将适用于整个应用程序的所有控制器。
用途:
全局异常处理:使用 @ExceptionHandler 注解在 @ControllerAdvice 中的方法可以处理应用程序中任何控制器抛出的异常。
全局模型属性:使用 @ModelAttribute 注解在 @ControllerAdvice 中的方法可以为每个控制器添加模型属性。

@ControllerAdvice
public class GlobalControllerAdvice {@ExceptionHandler(Exception.class)public String handleException(Exception e) {// 全局处理异常}@ModelAttributepublic void globalAttributes(Model model) {model.addAttribute("globalAttribute", "这是一个全局属性");}
}

原理:
拦截器(Interceptors):

Spring MVC 中的拦截器允许在请求被处理前和处理后执行一些操作。@ControllerAdvice 的实现主要依赖于 Spring 拦截器机制。在拦截器中,@ControllerAdvice 可以拦截并处理控制器抛出的异常,实现全局的异常处理。

AOP(Aspect-Oriented Programming):

@ControllerAdvice 还利用了 AOP 的思想,特别是在异常处理方面。通过使用 @ExceptionHandler 注解,@ControllerAdvice 实际上是声明了一个切面,该切面用于捕获和处理特定类型的异常。

全局异常解析器(Global Exception Resolvers):

Spring MVC 中的全局异常解析器负责捕获控制器抛出的异常并采取相应的行动。@ControllerAdvice 实际上就是定义了一个全局异常解析器。

组件扫描:

Spring 框架通过组件扫描机制来扫描带有 @ControllerAdvice 注解的类。一旦这些类被扫描到,Spring 就会将它们注册为全局异常处理器。

模型属性处理:

@ModelAttribute 注解用于将模型属性添加到所有控制器的模型中。这也是 @ControllerAdvice 的一部分,它通过 AOP 提供了一种全局配置的方式。

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

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

相关文章

【论文阅读笔记】Explicit Visual Prompting for Low-Level Structure Segmentations

1.介绍 Explicit Visual Prompting for Low-Level Structure Segmentations 低级结构分割的显式视觉提示 2023年发表在IEEE CVPR Paper Code 2.摘要 检测图像中低级结构(低层特征)一般包括分割操纵部分、识别失焦像素、分离阴影区域和检测隐藏对象。虽…

软件设计师软考题目解析下午题01

想说的话:要准备软考了。0.0,其实我是不想考的,但是吧,由于本人已经学完所有知识了,只是被学校的课程给锁在那里了,不然早找工作去了。寻思着反正也无聊,就考个证玩玩。 本人github地址&#xf…

C++基于多设计模式下的同步异步日志系统day1

C基于多设计模式下的同步&异步日志系统day1 📟作者主页:慢热的陕西人 🌴专栏链接:C基于多设计模式下的同步&异步日志系统 📣欢迎各位大佬👍点赞🔥关注🚓收藏,&am…

sqlserver保存微信Emoji表情

首先将数据库字段,设置类型为 nvarchar(200)一个emoji表情,占4字节就可以了,web前端展示不用改任何东西,直接提交数据保存;回显也会没有问题,C#代码不用做任何处理; 不哭不闹要睡觉&#x1f31…

Python:运算符、内置函数和序列基本用法

一、学习目标 1.熟练使用Python运算符。 2.熟练使用Python内置函数。 3.掌握输入、输出函数的使用方法。 4.了解列表、元组、字典、集合的概念和基本用法。 二、相关练习 1.输入一个自然数250,输出其…

王腾飞出席整体系统智能节电设备在工矿企业中的应用

演讲嘉宾:王腾飞 中科兆和电力技术(山东)有限公司综合能源管理事业部--部长 演讲题目:整体系统智能节电设备在工矿企业中的应用 会议简介 “十四五”规划中提出,提高工业、能源领城智能化与信息化融合,明…

【IC前端虚拟项目】inst_buffer子模块DS与RTL编码

【IC前端虚拟项目】数据搬运指令处理模块前端实现虚拟项目说明-CSDN博客 需要说明一下的是,在我所提供的文档体系里,并没有模块的DS文档哈,因为实际项目里我也不怎么写DS毕竟不是每个公司都和HISI一样对文档要求这么严格的。不过作为一个培训的虚拟项目,还是建议在时间充裕…

基于JAVA,SpringBoot,Vue,UniAPP智能停车场小程序管理系统设计

摘要 本设计旨在开发一款基于Java, SpringBoot, Vue和UniApp的智能停车场小程序,以实现现代化、智能化的停车管理解决方案。通过整合后端Java SpringBoot框架和前端Vue与UniApp技术,该小程序能够为用户提供一个简洁、高效且用户友好的交互界面&#xff…

docker配置数据默认存储路径graph已过时,新版本中是data-root

错误信息 我在修改/etc/docker/daemon.json文件中,添加存储路径graph字段。然后sudo systemctl restart docker包如下错误:使用journalctl -xeu docker.service错误信息,发现不能匹配graph字段。 原因 我的docker版本: 在doc…

【MySQL】MySQL复合查询--多表查询自连接子查询 - 副本

文章目录 1.基本查询回顾2.多表查询3.自连接4.子查询 4.1单行子查询4.2多行子查询4.3多列子查询4.4在from子句中使用子查询4.5合并查询 4.5.1 union4.5.2 union all 1.基本查询回顾 表的内容如下: mysql> select * from emp; ----------------------------…

mysql数据库学习笔记2——linux系统下安装,对库,表的基本操作语句

关于在linux系统下安装可以查看linux 安装mysql服务(超详细)_cannot write to-CSDN博客相关教程 对库的一些操作有 show databases查看有哪些数据库,create database “新建数据库名称” 创建新的数据库,use “数据库名称”切换…

Centos 7 用户密码忘记解决办法

Centos 7 修改用户密码 重置密码 1、开机进入GRUB界面,在引导程序菜单上进行选择开机后进入以下界面,然后按Esc或者E键编辑选项: 2.用上下箭头翻到最后,编辑修改两处:ro改为rw,在LANGen_US.UFT-8后面添加init/bin/sh…