記錄一次@Around使用不正確造成的StackOverflowError

同事發了一個底層服務後。我負責的某個上層服務突然掛了,有點慌,馬上查看上層服務的日誌。

查看日誌特別長。沒找到從哪兒報的。 

跳到最上開始找,結果: StackOverflowError。就想到了遞歸調用。

隨即找到相關代碼一看:

 

由於doSomething方法也被@Around攔截,因此,一旦service下某個方法被攔截進入doAround,就會調用other.doSomething(),就又會觸發doAround

導致一直遞歸調用且無法退出。

 

解決:在@Around攔截的時候, 排除掉doSomething方法即可解決。

ps: @Around中不要用到被攔截方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章