SpringBoot全局异常处理之多个处理器匹配顺序(最新推荐)

 更新时间:2024年03月29日 14:18:06   作者:HJSY  
这篇文章主要介绍了SpringBoot全局异常处理之多个处理器匹配顺序(最新推荐),调试源码可见匹配顺序为:异常层级高者优先,再清楚点,子类异常处理器优先,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧

Spring版本:5.0.6

多个处理器的两种情况

1. 存在一个类中

@RestControllerAdvice
public class ExceptionHandle {
    @ExceptionHandler(Exception.class)
    public Object handle(Exception e){
        e.printStackTrace();
        HashMap<String, Object>  map = new HashMap<>();
        map.put("location", "exception");
        map.put("msg", e.getMessage());
        map.put("localMsg", e.getLocalizedMessage());
        return map;
    }
    @ExceptionHandler(MyException.class)
    public Object handle(MyException e){
        e.printStackTrace();
        HashMap<String, Object>  map = new HashMap<>();
        map.put("location", "myException");
        map.put("msg", e.getMessage());
        map.put("localMsg", e.getLocalizedMessage());
        return map;
    }
    @ExceptionHandler(WantException.class)
    public Object handle(WantException e){
        e.printStackTrace();
        HashMap<String, Object>  map = new HashMap<>();
        map.put("location", "want-to-exception");
        map.put("msg", e.getMessage());
        map.put("localMsg", e.getLocalizedMessage());
        return map;
    }
}

调试源码可见匹配顺序为:异常层级高者优先!再清楚点,子类异常处理器优先
源码:

在这里插入图片描述

在这里插入图片描述

2. 存在不同的类中

在这里插入图片描述

源码可见

在这里插入图片描述

通过以上代码可以看到与多个异常处理类放入LinkedHashMap的顺序有关,那么,这个放入的顺序是什么呢?继续看源码:

在这里插入图片描述

此处对异常处理类进行了排序,排序逻辑继续源码:

在这里插入图片描述

此处看到可以利用Order指定顺序,如果没有,则默认最小顺序;

那么,如果都没有指定顺序的话,那就是list中的顺序,源码:

在这里插入图片描述

获取所有的beanDefinitionNames,再遍历寻找标注了异常处理注解的类,放入list中(存在父容器的合并后再遍历寻找)
。。。待更新

到此这篇关于SpringBoot全局异常处理之多个处理器匹配顺序的文章就介绍到这了,更多相关SpringBoot多个处理器匹配顺序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java实现LRU缓存的实例详解

    Java实现LRU缓存的实例详解

    这篇文章主要介绍了Java实现LRU缓存的实例详解的相关资料,这里提供实例帮助大家理解掌握这部分内容,需要的朋友可以参考下
    2017-08-08
  • Java实现时间动态显示方法汇总

    Java实现时间动态显示方法汇总

    这篇文章主要介绍了Java实现时间动态显示方法汇总,很实用的功能,需要的朋友可以参考下
    2014-08-08
  • Java源码角度分析HashMap用法

    Java源码角度分析HashMap用法

    这篇文章主要介绍了Java源码角度分析HashMap用法,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • Java 数据结构之删除链表中重复的结点

    Java 数据结构之删除链表中重复的结点

    在一个排序的链表中,会存在重复的结点,如何实现删除该链表中重复的结点,重复的结点不保留,并返回链表头指针呢?接下来小编将带你详细介绍
    2021-12-12
  • java括号匹配问题介绍

    java括号匹配问题介绍

    大家好,本篇文章主要讲的是java括号匹配问题介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • IDEA安装lombok插件设置Enable Annotation Processing后编译依然报错解决方法

    IDEA安装lombok插件设置Enable Annotation Processing后编译依然报错解决方法

    这篇文章主要介绍了IDEA安装lombok插件设置Enable Annotation Processing后编译依然报错解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Java使用@Validated注解进行参数验证的方法

    Java使用@Validated注解进行参数验证的方法

    这篇文章主要介绍了Java使用@Validated注解进行参数验证的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • C语言实现矩阵运算案例详解

    C语言实现矩阵运算案例详解

    这篇文章主要介绍了C语言实现矩阵运算案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • Spring Cloud 请求重试机制核心代码分析

    Spring Cloud 请求重试机制核心代码分析

    这篇文章主要介绍了Spring Cloud 请求重试机制核心代码分析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Maven 常用插件的详细整理

    Maven 常用插件的详细整理

    这篇文章主要介绍了Maven 常用插件的详细整理的相关资料,这里整理了maven的常用插件需要的朋友可以看下,需要的朋友可以参考下
    2017-08-08

最新评论