Spring boot错误处理原理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/nangeali/article/details/82597757

错误处理原理

ErrorMvcAutoConfiguration
错误处理自动配置
这里写图片描述

自动配置

给容器中添加了以下组件

1、DefaultErrorAttributes
2、BasicErrorController
3、ErrorPageCustomizer
4、DefaultErrorViewResolver

错误处理过程

一但系统出现4xx或者5xx之类的错误
ErrorPageCustomizer
就会生效,定制错误的响应规则

registerErrorPages
注册错误页面的响应规则
这里写图片描述

getPath

path,值为/error
/error,就是从配置文件中,取出error.path的值

系统出现错误以后,来到error请求进行处理
web.xml注册的错误页面规则
这里写图片描述
就会来到/error请求
就会被BasicErrorController处理

BasicErrorController

基本错误处理
这里写图片描述
从配置文件中,获取server.error.path的值

如果,没有配置,获取error.path的值
如果,也没有配置,获取/error的值

处理默认/error请求
这里写图片描述

处理方式

提供了两种方式
处理/error请求

ModelAndView
产生html类型的数据
浏览器发送的请求,来到这个方法处理

ResponseEntity
产生json数据
其他客户端,来到这个方法处理

识别原理

根据请求头来识别
浏览器的请求头
这里写图片描述
客户端的请求头
这里写图片描述

ModelAndView

处理浏览器请求
去哪个页面,作为错误页面
错误页面,包含的页面地址,页面内容

resolveErrorView

获取所有的异常视图解析器
ErrorViewResolver得到ModelAndView

如果,得到了就返回
如果,得不到就为null
这里写图片描述
响应页面,去哪个页面
是由DefaultErrorViewResolver解析得到的

DefaultErrorViewResolver

默认错误视图解析器
这里写图片描述
ModelAndView
将视图名,拼在error/后面
默认SpringBoot可以去找到一个页面

比如,error/404
如果,模板引擎可以解析
这个页面地址,就用模板引擎解析

模板引擎可用的情况下
返回到errorViewName指定的视图地址
这里写图片描述

resolveResource

模板引擎不可用
就在静态资源文件夹下
找errorViewName对应的页面 error/404.html

如果,静态资源文件夹下存在,返回这个页面
如果,静态资源文件夹下不存在,返回null
这里写图片描述

猜你喜欢

转载自blog.csdn.net/nangeali/article/details/82597757