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

版权声明:转载请声明转自http://blog.csdn.net/thewindkee https://blog.csdn.net/thewindkee/article/details/87722257

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

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

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

随即找到相关代码一看:

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

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

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

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

猜你喜欢

转载自blog.csdn.net/thewindkee/article/details/87722257