Spring Boot 错误处理机制源码解析时序图
2020-04-01 12:09:06 61 举报
Spring Boot 错误处理机制源码解析时序图
作者其他创作
大纲/内容
ErrorProperties
调用 ErrorPageCustomizer 内部类执行registerErrorPages() 方法
此处以 Thymeleaf 为例:会根据 Thymeleaf 规则,自动拼接前缀后缀。拼接后为 classpath:/template/error/404.html接下来就去找是否有这么一个页面(亦可使用通配符格式,如果没有404.html,就会去匹配4xx.html)
1.errorHtml()方法
开始发送 URL 请求
2
使用模板引擎
调用 resolveErrorView()方法
调用 getErrorAttributes() 方法,获取错误返回的数据
因为错误码太多,所以引入了 4xx、5xx这种通配符的方式
根据错误状态码,拼接调用的错误页返回 404,即:error/404返回500:即:error/500
从 Spring Boot 规定的如下 5 个静态资源路径查找 error/404.html、error/505.html 等页面1.classpath:/META-INF/resources/2.classpath:/resources/3.classpath:/static/4.classpath:/public/5./
当系统出现 4xx 或者 5xx之类的错误;ErrorPageCustomizer组件就会生效
未使用模板引擎
1
具体信息: timestamp:时间戳 status:状态码 error:错误提示 exception:异常对象 message:异常消息 errors:JSR303数据校验的错误都在这里
2.error()方法
DefaultErrorViewResolver
error 页 在 ErrorMvcAutoConfiguration 类下静态内部类 WhitelabelErrorViewConfiguration 指定
ErrorMvcAutoConfiguration
以 ResponseEntity 类的格式,返回一个 Json 串
Spring Boot 错误处理机制源码解析时序图
第 2 步,均未匹配到(没使用模板引擎、静态资源路径下找不到具体错误页)通过new ModelAndView(\"error\
调用 resolveResource() 方法
3
扛麻袋的少年 2020-04-01
发送一个不存在的请求:http://localhost:8081/users
返回 /error 请求路径
获取 error 后请求的路径
静态块指定 可以使用4xx、5xx 这种通配符的错误页
调用 resolve() 方法
@Value(\"${error.path:/error}\") private String path = \"/error\";
分2种情况:①浏览器访问返回错误页面 ②客户端访问返回 Json 数据
BasicErrorController
new ErrorPageCustomizer( )
DefaultErrorAttributes
根据项目是否使用模板引擎进行区分,分为 2 种情况
调用 getStatus() 方法,获取错误放回状态,比如:404、500获取方法:request.getAttribute(\"javax.servlet.error.status_code\");
0 条评论
下一页