天天看點

Spring AOP異常處理(error at ::0 formal unbound in pointcut)

【問題背景】

基于XML配置開發AspectJ和基于注解開發AspectJ時報錯:error at ::0 formal unbound in pointcut

【問題分析】

切點綁定失敗,必然是AspectJ相關配置出現問題。

【問題解決】

逐一檢視配置,包括每個切點的定義,切面配置,通知配置。經排查,發現是“異常通知”配置有誤,沒有将異常throwing出去。

修改前:

<aop:after-throwing method="exceptAdvice" pointcut-ref="pointCut1"/>

@AfterThrowing(value="pointCut1()")

       public void exceptAdvice(Throwable e) {

              System.out.println("異常通知,程式執行異常"+e.getMessage());

 }

 修改後:

<aop:after-throwing method="exceptAdvice" pointcut-ref="pointCut1" throwing="e"/>

@AfterThrowing(value="pointCut1()",throwing="e")

       public void exceptAdvice(Throwable e) {

              System.out.println("異常通知,程式執行異常"+e.getMessage());

}

 【總結】

Spring AOP出現問題很容易排查的,常見的報錯原因可能有:

1.缺少依賴包

2.包掃描失敗或未正确掃描目标類或切面類所在的包

3.注解配置時,(函數本身或注解)參數遺漏或者參數錯誤、缺少注解等。

4.配置檔案中配置AspectJ時,标簽屬性遺漏或屬性值格式不正确。

繼續閱讀