簡體   English   中英

如何從依賴項中忽略@ExceptionHandler?

[英]How to ignore an @ExceptionHandler from a dependency?

我在嘗試在自定義異常處理程序(以@ExceptionHandler@ControllerAdvice注釋)中的一個方法中返回“ ResponseEntity ”時遇到問題,我正在從“ doOnError”(rxjava)調用此方法,但是我的問題是,執行此操作時,不僅調用了我的方法,還調用@ControllerAdvice注釋類中的另一個@ExceptionHandler ,但是該類不在我的項目中,而是在我的依賴項中。闡明我的問題:

我正在嘗試處理項目中的每個異常,並返回一個ResponseEntity,但是當我在@ControllerAdvice中的 @ExceptionHandler上執行此操作時,在我的自定義項中調用了另一個位於我的依賴項中的項,因此我所擁有的響應實體build,永遠不會返回,它只會返回依賴項@ExceptionHandler創建的。

我的問題是,有一種方法可以避免調用依賴項異常處理程序?

注意事項

  • @ExceptionHandler用於異常處理程序類中的方法,最后一個使用@ControllerAdvice進行注釋
  • 我嘗試使用Order和Priority批注,但它們對我不起作用。

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

您可以為該特定ExceptionHandler類創建自定義排除過濾器,定義要排除的包(根據定義處理程序的包可能不可行),甚至可以定義要排除的特定類。

我解決了我的問題。 我嘗試了João提出的@ComponentScan解決方案,但該解決方案對我不起作用,因為位於我依賴項中的異常處理程序未標注為組件。.因此,我再次進行研究,發現添加了另一個我的異常處理程序(注解為@ExceptionHandler )中的“ handleException”方法的參數不起作用,因為我刪除了第二個參數(我只有“ throwable”),它開始起作用! 所以在簡歷中,我添加了..

@Order(Ordered.HIGHEST_PRECEDENCE)

..annotation我的異常處理程序類,並在@ExceptionHandler注釋的方法中僅放置一個參數(異常),該方法將檢索我需要的“ ResponseEntity”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM