Spring Boot 错误处理机制源码解析时序图
2020-04-01 12:09:06   74  举报             
     
         
 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 条评论
 下一页
  
   
  
  
  
  
  
  
  
  
 