java—如何从依赖项忽略@exceptionhandler?

odopli94  于 2021-07-09  发布在  Java
关注(0)|答案(2)|浏览(440)

我在一个自定义异常处理程序(用@exceptionhandler和@controlleradvice注解)中的方法中尝试返回一个“responseentity”时遇到了一个问题,我从一个“doonerror”(rxjava)调用这个方法,但我的问题是,当我这样做时,不仅调用了我的方法,还调用了@controlleradvice注解类中的另一个@exceptionhandler,但该类不在我的项目中,而是在我的一个依赖项中。。为了澄清我的问题:
我正在尝试处理项目中返回responseentity的每个异常,但是当我在@controlleradvice中的@exceptionhandler上执行此操作时,位于我的依赖项中的另一个在我的自定义实体之后被调用,因此我构建的响应实体永远不会返回,它只返回由依赖项@exceptionhandler创建的响应实体。
我的问题是,有没有一种方法可以避免调用依赖异常处理程序?
笔记:
@exceptionhandler用于异常处理程序类中的方法,最后一个用@controlleradvice注解。
我尝试过顺序和优先级注解,但它们对我不起作用。

qxgroojn

qxgroojn1#

您可以使用 @ComponentScan 从Spring开始(https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/componentscan.html#excludefilters).
您可以为该特定的 ExceptionHandler 类,定义要排除的包(根据定义处理程序的包可能不可行),甚至定义要排除的特定类。

ocebsuys

ocebsuys2#

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

@Order(Ordered.HIGHEST_PRECEDENCE)

..注解到我的异常处理程序类,并在 @ExceptionHandler 带注解的方法,它将检索我需要的“responseentity”。

相关问题