当前位置: 首页 > 知识库问答 >
问题:

如何从依赖项中忽略@ExceptionHandler?

戚甫
2023-03-14

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

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

我的问题是,有没有一种方法可以避免调用依赖异常处理程序?

注意事项:

  • @ExceptionHandler用于异常处理程序类中的方法,最后一个用@ControllerAdvice注释
  • 我尝试过顺序和优先级注释,但它们对我不起作用

共有2个答案

鄢承运
2023-03-14

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

@Order(Ordered.HIGHEST_PRECEDENCE)

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

谭吉星
2023-03-14

您可以使用Spring(https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/ComponentScan.html#excludeFilters)中的@ComponentScan防止类被加载。

您可以为特定的ExceptionHandler类创建自定义排除筛选器,定义要排除的包(根据定义处理程序的包可能不可行),甚至定义要排除的特定类。

 类似资料:
  • 问题内容: 有什么方法可以强制安装pip python软件包,而忽略所有无法满足的依赖关系吗? (我不在乎这样做有多“错”,我只需要这样做,除了逻辑和推理之外……) 问题答案: 点有一个开关。您应该使用它。 有关更多信息,请运行,在这里您将看到以下行:

  • 我正在以下项目结构中使用Gradle Android实验插件: 设置.分级 Build.Gradle

  • 忽略依赖项的警告 警告:dependency org.apache.httpcomponents:httpclient:4.0.1在调试时被忽略,因为它可能与Android提供的内部版本冲突。如果有问题,请用jarjar重新打包以更改类包警告:dependency org.apache.httpcomponents:httpclient:4.0.1将被忽略以发布,因为它可能与Android提供的内

  • 根据我的理解,clean现在将调用clearVersionProperties,war将调用WriteVersionProperties。 但当我执行分级清洁时,Reactor计划看起来是这样的: 为什么要执行clearVersionProperties和writeVersionProperties任务,因为它们绑定到某些构建阶段?例如,不执行任务infoEnv,而是执行任务writeVersio

  • Maven正在过渡地使用guava的第16版,尽管我有一个 快速总结: 取决于 有一个父pom,

  • 在我的夸克应用程序中,我在一个单独的gradle项目/模块中实现了存储库,部分原因是我希望能够确保单元测试不使用数据库等。 问题是,如果我想在测试中使用任何注入的依赖项,我需要使用@QuarkusTest,然后构建或启动确保满足所有依赖项。 有没有一种方法不涉及模仿每一个外部依赖,例如。? < li >运行测试时,不要在构建或启动期间强制依赖关系,而是在运行时让它出错(如果被访问)。 < li >