我在尝试在自定义异常处理程序(带有 @ExceptionHandler 和<<注释)的方法之一中返回“ ResponseEntity ”时遇到问题strong> @ControllerAdvice ),我从“ doOnError”(rxjava)调用此方法,但是我的问题是,执行此操作不仅不仅调用了我的方法,还调用了另一个 @ExceptionHandler @ControllerAdvice 中带注释的类被调用,但是该类不在我的项目中,而是在我的依赖项中。.因此,以澄清我的问题:
我正在尝试处理项目中的每个异常,都返回一个ResponseEntity,但是当我在 @ControllerAdvice 中的 @ExceptionHandler 上执行此操作时,另一个位于我的依赖项是在我的自定义项之后调用的,因此我所构建的响应实体永远不会返回,它只会返回由依赖项 @ExceptionHandler 创建的响应实体。
我的问题是,有一种避免调用依赖项异常处理程序的方法吗?
注释:
答案 0 :(得分:1)
您可以防止使用Spring(https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/ComponentScan.html#excludeFilters)的@ComponentScan
加载类。
您可以为特定的ExceptionHandler
类创建自定义排除过滤器,定义要排除的包(根据定义处理程序的包可能不可行),甚至可以定义要排除的特定类
答案 1 :(得分:0)
我解决了我的问题。我尝试了João提出的@ComponentScan
解决方案,但该解决方案对我不起作用,因为位于我的依存关系中的异常处理程序未标注为组件。.因此,我再次进行研究,并弄清楚我在异常处理程序中的“ handleException”方法中添加了另一个参数(注释为@ExceptionHandler
),该方法不起作用,因为我删除了第二个参数(我只有“ throwable”),并且它开始工作!所以在简历中,我添加了..
@Order(Ordered.HIGHEST_PRECEDENCE)
.. annotation到我的异常处理程序类中,并且仅将一个参数(异常)放入带有注释的@ExceptionHandler
方法中,该方法将检索我需要的“ ResponseEntity” 。