记录一次@Around使用不正确造成的StackOverflowError

同事发了一个底层服务后。我负责的某个上层服务突然挂了,有点慌,马上查看上层服务的日志。

查看日志特别长。没找到从哪儿报的。 

跳到最上开始找,结果: StackOverflowError。就想到了递归调用。

随即找到相关代码一看:

 

由于doSomething方法也被@Around拦截,因此,一旦service下某个方法被拦截进入doAround,就会调用other.doSomething(),就又会触发doAround

导致一直递归调用且无法退出。

 

解决:在@Around拦截的时候, 排除掉doSomething方法即可解决。

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

posted @ 2019-02-20 09:45  thewindkee  阅读(209)  评论(0编辑  收藏  举报