ErrorMvcAutoConfiguration自动配置的三个组件的分析

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

异常处理原理分析
ErrorMvcAutoConfiguration 异常处理的自动配置类

**问题: 1. 对于basicErrorController 和 DefaultErrorViewResolver 的关系 **

1.basicErrorController会接受/error的请求 并且返回视图解析器 是一个默认的白页 
而DefaultErrorViewResolver 是一个错误解析器 会检测/error下是否定义4XX 5xX 的html页面 
只有在我们定义了新的id为error的视图的时候 才不会显示白页而显示自定义的视图页。为什么在/error下定义了4xx 5xx后
也不会显示白页?

在其中定定义若干组件:

  1. 类型:DefaultErrorAttributes -> ID :errorAttributes 定义了我们最后响应的消息中有哪些内容

    image-20210726212352439

    声明:
    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)]

    image-20210726212436229

    **处理默认/error路径的请求**    这个路径可以进行配置 使用 server.error.path				![image-20210726201004998](https://img-blog.csdnimg.cn/img_convert/71de42b2eb493d37f1c28ad566f31d60.png)
    

image-20210726204719343 处理默认/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格式

image-20210726204019793

image-20210726204229900

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

    image-20210726211124535

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值