我在一个自定义异常处理程序(用@exceptionhandler和@controlleradvice注解)中的方法中尝试返回一个“responseentity”时遇到了一个问题,我从一个“doonerror”(rxjava)调用这个方法,但我的问题是,当我这样做时,不仅调用了我的方法,还调用了@controlleradvice注解类中的另一个@exceptionhandler,但该类不在我的项目中,而是在我的一个依赖项中。。为了澄清我的问题:
我正在尝试处理项目中返回responseentity的每个异常,但是当我在@controlleradvice中的@exceptionhandler上执行此操作时,位于我的依赖项中的另一个在我的自定义实体之后被调用,因此我构建的响应实体永远不会返回,它只返回由依赖项@exceptionhandler创建的响应实体。
我的问题是,有没有一种方法可以避免调用依赖异常处理程序?
笔记:
@exceptionhandler用于异常处理程序类中的方法,最后一个用@controlleradvice注解。
我尝试过顺序和优先级注解,但它们对我不起作用。
2条答案
按热度按时间qxgroojn1#
您可以使用
@ComponentScan
从Spring开始(https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/componentscan.html#excludefilters).您可以为该特定的
ExceptionHandler
类,定义要排除的包(根据定义处理程序的包可能不可行),甚至定义要排除的特定类。ocebsuys2#
我解决了我的问题。我试过了
@ComponentScan
jo提出的解决方案ão它对我不起作用,因为位于我的依赖项中的异常处理程序没有被注解为组件。。所以我又开始研究,我发现当我在异常处理程序中的“handleexception”方法中添加另一个参数时@ExceptionHandler
)它不工作,因为我删除了第二个参数(我只有“throwable”),它开始工作了!所以在简历里,我加了。。..注解到我的异常处理程序类,并在
@ExceptionHandler
带注解的方法,它将检索我需要的“responseentity”。