2

我在尝试在我的一个方法中返回“ ResponseEntity ”时遇到问题,该方法位于自定义异常处理程序中(用@ExceptionHandler@ControllerAdvice注释),我从“doOnError”(rxjava)调用此方法,但我的问题是,当我这样做时,不仅调用了我的方法,还调用了@ControllerAdvice注释类中的另一个@ExceptionHandler,但是这个类不在我的项目中,在我的依赖项之一中。所以,到澄清我的问题:

我正在尝试处理返回 ResponseEntity 的项目中的每个异常,但是当我在@ControllerAdvice内的@ExceptionHandler上执行此操作时,位于我的依赖项中的另一个异常在我的自定义项之后被调用,因此我的响应实体构建,永远不会返回,它只是返回由依赖创建的@ExceptionHandler

我的问题是,有没有办法避免调用依赖异常处理程序?

备注

  • @ExceptionHandler用于异常处理程序类中的方法,最后一个用 @ControllerAdvice注释。
  • 我已经尝试使用 Order 和 Priority 注释,但它们对我不起作用。
4

2 回答 2

1

You can prevent classes from being loaded using @ComponentScan from Spring (https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/ComponentScan.html#excludeFilters).

You can either create a custom exclusion filter for that specific ExceptionHandler class, define the packages you want to exclude (might not be feasible depending on the package where the handler is defined) or even define specific classes to exclude.

于 2019-02-04T14:32:28.380 回答
0

我解决了我的问题。我尝试了@ComponentScanJoão 提出的解决方案,但它对我不起作用,因为位于我的依赖项中的异常处理程序没有注释为组件.. 所以我再次开始研究,我发现当我添加另一个参数时我的异常处理程序(注释为@ExceptionHandler)中的“handleException”方法不起作用,因为我删除了第二个参数(我只有“throwable”)并且它开始工作了!所以在简历中,我添加了..

@Order(Ordered.HIGHEST_PRECEDENCE)

..annotation 到我的异常处理程序类,并在带@ExceptionHandler注释的方法中只放置一个参数(异常),这将检索我需要的“ResponseEntity” 。

于 2019-03-22T16:36:41.543 回答