springboot3错误处理机制源码分析

 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是默认的视图内部类,该类中就是各种的默认的错误视图。

 

 最终完成错误处理。

总结

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值