首页 > 编程语言 > 详细

三、SpringBoot异常处理(SpringBoot系列)

时间:2021-05-18 09:10:57      阅读:16      评论:0      收藏:0      [点我收藏+]

自定义异常页面

  1. 直接在static/error目录下添加静态页面,文件名为状态码(500.html),不用再额外设置,会返回指定页面,也支持模糊匹配 (5xx.html)

  2. 使用thymeleaf生成动态页面,放在thymeleaf/error 目录下,同上,文件名设为状态名,遇到错误时,会直接跳转、

  3. 当静态异常页面和动态异常页面两个都储存在时,优先级

    thymeleaf精准匹配页面 > 静态精准匹配页面 > thymeleaf模糊匹配页面 > 静态模糊匹配页面

技术分享图片

自定义异常页面的原理

建议自己在ErrorMvcAutoConfiguration中跟一下源码

  1. 在ErrorMvcAutoConfiguration 类中静态内部类DefaultErrorViewResolverConfiguration中提供了DefaultErrorViewResolver

    技术分享图片

  2. DefaultErrorViewResolver中resolveErrorView()方法

    技术分享图片

    1. 从SpringBoot默认四个防止静态文件的目录中匹配

技术分享图片

自定义异常数据:

ErrorMvcAutoConfiguration类中提供了一个DefaultErrorAttributes处理异常数据,我们可以直接继承DefaultErrorAttributes,重写接口ErrorAttributes中getErrorAttrobutes()方法,基于DefaultErrorAttributes已经处理过的异常数据进行修改(若直接继承ErrorAttributes重写方法,还需要自己处理异常,比较麻烦):

技术分享图片

技术分享图片

实现:

@Component
public class MyErrorAttribute extends DefaultErrorAttributes {
    @Override
    public Map<String, Object> getErrorAttributes(WebRequest webRequest, boolean includeStackTrace) {
        Map<String, Object> map = super.getErrorAttributes(webRequest, includeStackTrace);
        map.put("myError", "自定义的异常信息!");
        return map;
    }
}

自定义异常视图:

异常处理视图和 自定义异常页面 默认都是DefaultErrorViewResolver处理的,若想自定义,也可继承DefaultErrorViewResolver,基于它的基础进行修改

技术分享图片

实现:

@Component
public class MyErrorViewResolver extends DefaultErrorViewResolver {
    public MyErrorViewResolver(ApplicationContext applicationContext, ResourceProperties resourceProperties) {
        super(applicationContext, resourceProperties);
    }
    
    @Override
    public ModelAndView resolveErrorView(HttpServletRequest request, HttpStatus status, Map<String, Object> model) {
        // model是异常数据,是不可修改map
        // 我们也可以直接在这里自定义异常数据,不过要新建一个map,在把值赋值过去
        ModelAndView mv = new ModelAndView();
        mv.setViewName("error");
        mv.addAllObjects(model);
        return mv;
    }
}

三、SpringBoot异常处理(SpringBoot系列)

原文:https://www.cnblogs.com/zhaoyuan72/p/14778915.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!