同事發了一個底層服務後。我負責的某個上層服務突然掛了,有點慌,馬上查看上層服務的日誌。
查看日誌特別長。沒找到從哪兒報的。
跳到最上開始找,結果: StackOverflowError。就想到了遞歸調用。
隨即找到相關代碼一看:
由於doSomething方法也被@Around攔截,因此,一旦service下某個方法被攔截進入doAround,就會調用other.doSomething(),就又會觸發doAround
導致一直遞歸調用且無法退出。
解決:在@Around攔截的時候, 排除掉doSomething方法即可解決。
ps: @Around中不要用到被攔截方法。