第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

設(shè)置多個@ControllerAdvice @ExceptionHandlers的優(yōu)先級

設(shè)置多個@ControllerAdvice @ExceptionHandlers的優(yōu)先級

慕后森 2019-10-28 10:58:09
我有多個用注釋的類@ControllerAdvice,每個類都有一個@ExceptionHandler方法。一個處理程序Exception的意圖是,如果找不到更多特定的處理程序,則應使用該處理程序。遺憾的是,Spring MVC似乎總是使用最通用的情況(Exception),而不是使用更具體的情況(IOException例如)。這是人們期望Spring MVC表現(xiàn)的方式嗎?我試圖從Jersey模擬一個模式,該模式評估每個ExceptionMapper(等效組件)以確定它處理的聲明類型與引發(fā)的異常之間的距離,并且始終使用最接近的祖先。
查看完整描述

3 回答

?
慕神8447489

TA貢獻1780條經(jīng)驗 獲得超1個贊

這是人們期望Spring MVC表現(xiàn)的方式嗎?


從Spring 4.3.7開始,Spring MVC的行為如下:它使用HandlerExceptionResolver實例來處理由處理程序方法引發(fā)的異常。


默認情況下,Web MVC配置注冊一個HandlerExceptionResolverbean HandlerExceptionResolverComposite,即


委托其他名單HandlerExceptionResolvers。


那些其他解析器是


ExceptionHandlerExceptionResolver

ResponseStatusExceptionResolver

DefaultHandlerExceptionResolver

以該順序注冊。出于這個問題的目的,我們只關(guān)心ExceptionHandlerExceptionResolver。


一AbstractHandlerMethodExceptionResolver,通過解析異常@ExceptionHandler的方法。


在上下文初始化時,Spring將為它檢測到的ControllerAdviceBean每個帶@ControllerAdvice注釋的類生成一個。該ExceptionHandlerExceptionResolver會從上下文檢索這些,并使用排序,使用AnnotationAwareOrderComparator其


是對擴展的OrderComparator支持,它支持Spring的Ordered 接口以及@Order和@Priority批注,并由Ordered實例提供的訂單值覆蓋靜態(tài)定義的批注值(如果有)。


然后,ExceptionHandlerMethodResolver將為每個這些ControllerAdviceBean實例注冊一個(將可用@ExceptionHandler方法映射到它們打算處理的異常類型)。最后,將它們以相同的順序添加到中LinkedHashMap(保留迭代順序)。


當發(fā)生異常時,ExceptionHandlerExceptionResolver會遍歷這些異常ExceptionHandlerMethodResolver并使用可以處理異常的第一個異常。


因此,這里的一點是:如果你有一個@ControllerAdvice帶有@ExceptionHandler用于Exception該被另一注冊前@ControllerAdvice與類@ExceptionHandler的更具體的例外,比如IOException,是第一個將被調(diào)用。如前所述,您可以通過@ControllerAdvice實現(xiàn)Ordered帶注釋的類或用@Order或?qū)ζ溥M行注釋@Priority并為其指定適當?shù)闹祦砜刂圃撟皂樞颉?/p>


查看完整回答
反對 回復 2019-10-28
  • 3 回答
  • 0 關(guān)注
  • 7447 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號