ErrorMvcAutoConfiguration自动配置的三个组件的分析
异常处理原理分析
ErrorMvcAutoConfiguration 异常处理的自动配置类
**问题: 1. 对于basicErrorController 和 DefaultErrorViewResolver 的关系 **
1.basicErrorController会接受/error的请求 并且返回视图解析器 是一个默认的白页
而DefaultErrorViewResolver 是一个错误解析器 会检测/error下是否定义4XX 5xX 的html页面
只有在我们定义了新的id为error的视图的时候 才不会显示白页而显示自定义的视图页。为什么在/error下定义了4xx 5xx后
也不会显示白页?
在其中定定义若干组件:
-
类型:DefaultErrorAttributes -> ID :errorAttributes 定义了我们最后响应的消息中有哪些内容

声明:
public class DefaultErrorAttributes implements ErrorAttributes, HandlerExceptionResolver, Ordered {2.类型:BasicErrorController -> ID : basicErrorController总结:当接受到/error的请求时候 会响应一个modelAndView对象
在容器中有一个默认的Bean ID为error的View对象。 而这个ModelAndView对象会被视图解析器解析
这个视图解析器 按照返回的视图名字对味组件的id 取容器中寻找view对象。如果没有进行配置 那么默认寻找到的就是
默认的那个StaticView对象 而这个staticeView对象中存储的就是默认的系统白页
所以 我们当想自定义错误页的时候 我们就可以定义一个视图 名字为error的 因为在视图解析器解析时候 会去找id为error的视图
而这个默认的视图有一个注解表示 如果没有自定义id为error的视图 采用这个默认视图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-822TpjS5-1627306010508)(/Users/rain/Library/Application Support/typora-user-images/image-20210726210008097.png)]

**处理默认/error路径的请求** 这个路径可以进行配置 使用 server.error.path 
处理默认/error路径的请求
响应一个modelAndView 要找到error视图 配合下下面注册的bean id为error 经过BeanNameResolver视图解析器 寻找到error对应的视图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u7Wdu8UP-1627306010514)(/Users/rain/Library/Application Support/typora-user-images/image-20210726201338982.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mpEGlfS0-1627306010514)(/Users/rain/Library/Application Support/typora-user-images/image-20210726203519392.png)]
返回的视图定义为staticView 其中定义了默认的html格式


-
组件 2 类型为:DefaultErrorViewResolver 是一个错误视图解析器

本文分析了Spring Boot的ErrorMvcAutoConfiguration自动配置类,重点探讨了DefaultErrorAttributes、BasicErrorController和DefaultErrorViewResolver这三个组件的作用。DefaultErrorAttributes负责错误信息,BasicErrorController处理/error请求,DefaultErrorViewResolver解析错误视图。通过理解这些组件,可以更好地自定义错误页面和处理流程。
1万+

被折叠的 条评论
为什么被折叠?



