同事发了一个底层服务后。我负责的某个上层服务突然挂了,有点慌,马上查看上层服务的日志。
查看日志特别长。没找到从哪儿报的。
跳到最上开始找,结果: StackOverflowError。就想到了递归调用。
随即找到相关代码一看:
由于doSomething方法也被@Around拦截,因此,一旦service下某个方法被拦截进入doAround,就会调用other.doSomething(),就又会触发doAround
导致一直递归调用且无法退出。
解决:在@Around拦截的时候, 排除掉doSomething方法即可解决。
ps: @Around中不要用到被拦截方法。