springboot3错误处理机制源码分析

news2025/1/24 2:28:13

 ErrorMvcAutoConfiguration

在springboot启动时会自动装配默认的错误处理机制 ErrorMvcAutoConfiguration

 springboot正在运行,此时发生了404的错误。(业务错误场景)分析底层处理流程。

1.如果在对应的controller层中设置了对应的错误处理器,则错误直接在springmvc中被处理。(如果没有则执行2)

2. ErrorMvcAutoConfiguration中在ioc容器中配置了BasicErrorController,该类在springboot中处理错误。

直接中途中的路径。(没有在手动配置的话,就使用默认的/error)

 在BasicErrorController中处理错误有两种返回方式,分别是页面和JSON。这里我们直接研究返回页面的方法。

观察方法中的resolveErrorView方法。

 就是使用默认的错误视图解析器处理错误视图。

 其执行的方法。

 获取当前的状态码,执行resolve方法。(此时就是404)

先状态码和路径进行拼接,在/template/error中查找是否存在404.html文件,找到了就直接对html页面进行渲染,如果没找到就执行  resolveResource 方法。

 在对用状态资源中查找是否存在error目录且其中是否存在404.html。

 如果都没有找到的话,执行下面方法。

 此时就会去找404的模糊码,这里就是对应的'4xx'。

以'4xx'作为参数,进入resolve方法 ,先进行路径拼接也就是/error/4xx.html,先在/template目录中查找是否存在,如果存在就直接返回,如果不存在就在状态资源中查找/error/4xx.html是否存在。(模糊码的存在和上述的具体状态码的步骤是相同的)

 3.如果还是没有找到,就返回error视图。

在ErrorMvcAutoConfiguration的自动配置中在ioc容器中配置了error的默认视图。

StaticView是默认的视图内部类,该类中就是各种的默认的错误视图。

 

 最终完成错误处理。

总结

 

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

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

相关文章

【裸机开发】链接脚本(.lds文件)的基本语法

目录 一、什么是链接脚本? 二、链接脚本的基本语法格式 1、常用命令 2、内置变量 三、链接脚本的简单案例 一、什么是链接脚本? 一段程序的编译需要经历四个阶段(预处理—编译—汇编—链接),而链接脚本管理的就是…

专业实习报告范本4篇

专业实习报告范本1 一、实习起止日期: 二、实习单位及部门(岗位): 三、主要实习内容: 对基础知识和专业理论知识的掌握及运用情况: 通过两年半的学习和两个月的紧张培训,让我学会了电路图的分析…

彻底关闭 Win10 系统自动更新【四大步骤】

Windows 10 的自动更新非常顽固,多用户在网上试了各种关闭win10自动更新的方法,刚开始看着好像是关闭更新了,可没过多久系统就又开始自动更新了。今天笔者就来教大家如何彻底关闭win10自动更新,该方法亲测有效。 一、禁用 Window…

【AIGC】15、Grounding DINO | 将 DINO 扩展到开集目标检测

文章目录 一、背景二、方法2.1 特征抽取和加强2.2 Language-Guided Query Selection2.3 Cross-Modality Decoder2.4 Sub-sentence level text feature2.5 Loss Function 3、效果3.1 zero-shot transfer of grounding DINO3.2 Referring Object detection3.3 Ablations3.4 从 DI…

java springboot工程整合JUnit测试

好啦从此文开始 我们开始学习整合第三方技术的知识 后续 我们会整合一下第三方技术 后续也还会用到很多 但大家要学的是思想 而不是某某技术怎么去整合 当你会任何一种技术 你都能自如的整合到项目中 你才算掌握了整合技术 好 那么开始先整合 JUnit 我们打开idea 打开我们的 …

VC6创建工程的各种类型

各个工程类型的含义是什么? ATL COM AppWizard 用ATL技术制作COM程序,例如:WORD里面用的公式编辑器 ATL: Active Template Library活动模板库。ATL是COM的开发工具。 COM: 1993年Microsoft首次公布了COM技术. Wizard:向导 什么是ATL? &…

十分钟,零基础使用uniCloud完成后端管理系统搭建二

上一节我们已经成功搭建基础版的后端管理系统,这一节我们将利用uniCloud给我们提供的schema2code自动生成代码,快速完成:列表、增加和修改页面创建。 上一节: 十分钟,零基础使用uniCloud完成后端管理系统搭建一_szii…

图论算法 --Dijkstra

当谈到计算机科学时,算法是一个重要的话题,因为它们能帮助解决很多问题。而有些算法,其高效性和惊人表现,令人感到惊艳。一起来分享一下你认为令人惊艳的高效算法吧! Dijkstra算法 一、你在工作和学习中用到过哪些惊艳…

半导体器件基础(期末模电速成)

目录 1、半导体分类 2、PN结 3、二极管 4、稳压二极管 5、三极管 6、场效应管 1、半导体分类 2、PN结 3、二极管 伏安特性: 我们第七版模电书上给的正向导通压降分别约为0.7和0.2V,且硅的单向导电性更好 如何确定二极管状态? 阳极电压…

C++ 输出格式控制

C 输出格式控制 需包含头文件: 浮点数精度、域宽、填充 操作符功能right-alignedright-alignedsetprecision(int n)设置以n表示的数值精度setw(int n)设置以n表示的域宽setfill(char c)设置以c表示的填充字符 输出格式 操作符功能oct以八进制格式输出数据dec以…

事件循环机制

基本概念 聊一下事件循环机制,在开始这篇文章之前,先明确一个概念,js本身是没有事件循环这个定义的。是js被嵌入相应的执行环境(浏览器 / Nodejs),配合当前事件循环的组成部分,具体来说分下面两…

【基于容器的部署、扩展和管理】3.4 灰度发布和A/B测试

往期回顾: 第一章:【云原生概念和技术】 第二章:【容器化应用程序设计和开发】 第三章:【3.1 容器编排系统和Kubernetes集群的构建】 第三章:【3.2 基于容器的应用程序部署和升级】 第三章:【3.3 自动…

【C++】引用和右值引用

目录 1. 引用 1.1 引用的概念 1.2 引用的特性 1.3 引用的使用场景 1.3.1 作为参数 1.3.2 作为返回值 1.4 常量引用 1.5 引用和指针的区别 2. 左值和右值 3. 右值引用 3.1 右值引用的概念 3.2 左值持久;右值短暂 3.3 变量是左值 3.4 标准库move函数 1.…

docker使用与服务器上的可视化(ROS rviz等)

1.安装docker 安装docker:官网教程,按照官网命令一步步来即可。 添加当前用户到docker用户组: 【docker】添加用户到docker组,这样后面运行docker的时候前面不需要加sudo命令,否则运行docker的时候一直需要在前面加su…

开发人员必备的万能工具箱:He3

目录 1.简介2.安装3.详细功能清单4.常用快捷键5.使用示例5.1 测试正则表达式5.2 文本比较 He3官网: https://he3.app/zh/ 1.简介 今天,给大家推荐一款开发人员必备的万能工具箱:He3,这是一款免费的开发者工具箱,截至…

十分钟,零基础使用uniCloud完成后端管理系统搭建一

本文主要是通过uniCloud搭建后端管理系统,适合小白开发者、个人开发者,零后端基础,快速、低成本完成后端管理系统搭建。 还未创建uniCloud服务空间的开发者可以查看我的文章:Dcloud开发者注册,uniCloud服务空间创建。…

电脑显示屏不亮但是主机已开机?5种原因以及解决方案

电脑与我们的日常生活和工作密切相关,缺了它我们工作就很难正常展开。电脑使用久了,难免出现一些小问题,比如:电脑显示屏不亮但是主机已开机,这是什么原因造成的?我们应该怎么处理? 可能很多人…

随机数发生器设计(四)

随机数发生器设计(四)- DRNG 概述1 内部状态2 初始化函数3 SM3派生函数4 其他部分 概述 本示例DRNG设计参考了GM/T 0105 ,基于SM3算法实现,内部功能接口包括初始化函数、重播种函数、输出函数和已知答案自测试函数,同…

正点原子STM32(基于HAL库)5

目录 SRAM 实验存储器简介SRAM 方案简介硬件设计程序设计程序流程图程序解析 下载验证 内存管理实验内存管理简介硬件设计程序设计程序流程图程序解析 下载验证 SD 卡实验SD 卡简介SD 物理结构命令和响应卡模式数据模式 SDIO 接口简介SDIO 主要功能及框图SDIO 的时钟SDIO 的命令…

《程序员必备品质》——沉稳1

目录 前言: 一.言论有分寸 1.1不抱怨不指责 1.2谈话时不触及别人的短 1.3学会装聋作哑 二.沉心静气 2.1先稳定情绪再解决问题 2.2急于求成则遇速不达 三.结尾 前言: 这周,我细细的读了一本书,还没精读完,不过…