Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring Boot 2:两个@ExceptionHandler方法用于不同和不相关类中的相同异常类型_Java_Spring_Spring Boot_Spring Mvc_Exception - Fatal编程技术网

Java Spring Boot 2:两个@ExceptionHandler方法用于不同和不相关类中的相同异常类型

Java Spring Boot 2:两个@ExceptionHandler方法用于不同和不相关类中的相同异常类型,java,spring,spring-boot,spring-mvc,exception,Java,Spring,Spring Boot,Spring Mvc,Exception,我有A类和B类。它们都用@RestControllerAdvice注释。另外,两个类都有一个用@ExceptionHandler(SomeException.class)注释的方法(注意,两个异常处理程序用于相同的异常类型)。类A和类B不在同一层次结构中 我这样做的原因是我在类a上没有控件,因为它在外部库中,我需要重写类a的ExceptionHandler的行为 在调试期间,我看到两个异常处理程序都在Spring异常处理程序缓存中注册,但是异常解析器总是选择类B的方法,而忽略类A(带有外部依赖项

我有A类和B类。它们都用
@RestControllerAdvice
注释。另外,两个类都有一个用
@ExceptionHandler(SomeException.class)
注释的方法(注意,两个异常处理程序用于相同的异常类型)。类A和类B不在同一层次结构中

我这样做的原因是我在类a上没有控件,因为它在外部库中,我需要重写类a的ExceptionHandler的行为

在调试期间,我看到两个异常处理程序都在Spring异常处理程序缓存中注册,但是异常解析器总是选择类B的方法,而忽略类A(带有外部依赖项)。这是我需要的,但是:

  • 我想了解为什么我的定制版本会被选中,并希望有一天spring不会突然选择library附带的版本
  • 有没有一种方法可以完全禁用库的异常处理程序,这样它甚至不会在异常处理程序缓存中注册

  • 我认为spring会覆盖其中任何一个是的,但我需要了解引擎盖下发生了什么,确定哪一个覆盖另一个的逻辑是什么,以确保有一天顺序不会改变异常处理程序只应在特定控制器出现错误时使用。它不应该用作一般异常处理程序(只有当
    @ExceptionHandler
    位于
    @ControllerAdvice
    注释类中时才是这种情况)。2.不,这是不可能的,因为它的作用域是控制器。我的类和库附带的类都有@RestControllerAdvice注释。它们不绑定到任何特定控制器