错误处理原理

ErrorMvcAutoConfiguration
错误处理自动配置
Spring boot错误处理原理

自动配置

给容器中添加了以下组件

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

错误处理过程

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

registerErrorPages
注册错误页面的响应规则
Spring boot错误处理原理

getPath

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

系统出现错误以后,来到error请求进行处理
web.xml注册的错误页面规则
Spring boot错误处理原理
就会来到/error请求
就会被BasicErrorController处理

BasicErrorController

基本错误处理
Spring boot错误处理原理
从配置文件中,获取server.error.path的值

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

处理默认/error请求
Spring boot错误处理原理

处理方式

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

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

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

识别原理

根据请求头来识别
浏览器的请求头
Spring boot错误处理原理
客户端的请求头
Spring boot错误处理原理

ModelAndView

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

resolveErrorView

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

如果,得到了就返回
如果,得不到就为null
Spring boot错误处理原理
响应页面,去哪个页面
是由DefaultErrorViewResolver解析得到的

DefaultErrorViewResolver

默认错误视图解析器
Spring boot错误处理原理
ModelAndView
将视图名,拼在error/后面
默认SpringBoot可以去找到一个页面

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

模板引擎可用的情况下
返回到errorViewName指定的视图地址
Spring boot错误处理原理

resolveResource

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

如果,静态资源文件夹下存在,返回这个页面
如果,静态资源文件夹下不存在,返回null
Spring boot错误处理原理

相关文章: