使用oap切面导致controller被被重复调用
背景:
在自测的时候发现某个很奇怪的问题,某个变量本该加1的变成了加2,debug后发现所有controller都被调用了两次,里面的方法也执行了两次
原因:
后面经过排查发现写切面的时候,在环绕通知里调用了两次joinPoint.proceed()
joinPoint.proceed():执行目标方法目标方法
定义的切点:
@Pointcut("execution(public * .......controller.*.*(..))")
可以看到execution表达式定义了所有controller包,及改包下所有类的所有方法,joinPoint.proceed()
解决方法:
修改原逻辑只执行一次joinPoint.proceed()