如何忽略依赖项中的@ExceptionHandler?
How to ignore an @ExceptionHandler from a dependency?
我在尝试 return 一个“ResponseEntity”时遇到问题,该方法位于自定义异常处理程序中(用 [= 注释) 19=]@ExceptionHandler 和 @ControllerAdvice),我从 "doOnError" (rxjava) 调用这个方法,但我的问题是当我这样做时这不仅调用了我的方法,还调用了 @ControllerAdvice 注释 class 中的另一个 @ExceptionHandler,但是这个 class 不在我的项目中,在我的依赖项之一中..所以,澄清我的问题:
我正在尝试处理我的项目中的每个异常 returning 一个 ResponseEntity,但是当我在 @ExceptionHandler 上执行此操作时 @ControllerAdvice,位于我的依赖项中的另一个在我的自定义实体之后被调用,所以我构建的响应实体永远不会 returned,它只是 return 创建的通过依赖 @ExceptionHandler.
我的问题是,有没有办法避免调用依赖异常处理程序?
备注:
- @ExceptionHandler 正在用于
异常处理程序 class,最后一个用注释
@ControllerAdvice.
- 我已经尝试使用 Order 和 Priority 注释,但它们对我不起作用。
您可以使用 @ComponentScan
从 Spring (https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/ComponentScan.html#excludeFilters) 阻止加载 classes。
您可以为特定 ExceptionHandler
class 创建自定义排除过滤器,定义要排除的包(可能不可行,具体取决于定义处理程序的包)或甚至定义要排除的特定 classes。
我解决了我的问题。我尝试了 João 提出的 @ComponentScan
解决方案,但它对我不起作用,因为位于我的依赖项中的异常处理程序未被注释为组件。所以我再次开始研究,我发现当我在我的异常处理程序中向 "handleException" 方法添加了另一个参数(注释为 @ExceptionHandler
)它不起作用,因为我删除了第二个参数(我只有 "throwable")它开始工作了!所以在简历中,我添加了 ..
@Order(Ordered.HIGHEST_PRECEDENCE)
..注释我的异常处理程序 class 并在 @ExceptionHandler
注释方法中只放置一个参数(异常),它将检索 "ResponseEntity" 我需要的。
我在尝试 return 一个“ResponseEntity”时遇到问题,该方法位于自定义异常处理程序中(用 [= 注释) 19=]@ExceptionHandler 和 @ControllerAdvice),我从 "doOnError" (rxjava) 调用这个方法,但我的问题是当我这样做时这不仅调用了我的方法,还调用了 @ControllerAdvice 注释 class 中的另一个 @ExceptionHandler,但是这个 class 不在我的项目中,在我的依赖项之一中..所以,澄清我的问题:
我正在尝试处理我的项目中的每个异常 returning 一个 ResponseEntity,但是当我在 @ExceptionHandler 上执行此操作时 @ControllerAdvice,位于我的依赖项中的另一个在我的自定义实体之后被调用,所以我构建的响应实体永远不会 returned,它只是 return 创建的通过依赖 @ExceptionHandler.
我的问题是,有没有办法避免调用依赖异常处理程序?
备注:
- @ExceptionHandler 正在用于 异常处理程序 class,最后一个用注释 @ControllerAdvice.
- 我已经尝试使用 Order 和 Priority 注释,但它们对我不起作用。
您可以使用 @ComponentScan
从 Spring (https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/ComponentScan.html#excludeFilters) 阻止加载 classes。
您可以为特定 ExceptionHandler
class 创建自定义排除过滤器,定义要排除的包(可能不可行,具体取决于定义处理程序的包)或甚至定义要排除的特定 classes。
我解决了我的问题。我尝试了 João 提出的 @ComponentScan
解决方案,但它对我不起作用,因为位于我的依赖项中的异常处理程序未被注释为组件。所以我再次开始研究,我发现当我在我的异常处理程序中向 "handleException" 方法添加了另一个参数(注释为 @ExceptionHandler
)它不起作用,因为我删除了第二个参数(我只有 "throwable")它开始工作了!所以在简历中,我添加了 ..
@Order(Ordered.HIGHEST_PRECEDENCE)
..注释我的异常处理程序 class 并在 @ExceptionHandler
注释方法中只放置一个参数(异常),它将检索 "ResponseEntity" 我需要的。