Spring boot aop 调用两次或多次的问题分析


原因分析

  1. Aop 配置类加载了两次
  2. @Around 获取返回值操作不当

解决方法

  1. 配置类只需要加两个注解,其他地方无需修改
@Aspect
@Component
public class AopConfig {}
  1. 获取返回值的错误操作
// 错误版本
@Around("log()")
    public Object around(ProceedingJoinPoint point) throws Throwable {
        System.out.println("arround");
        logger.info("【返回值(return)】:"+JSONUtil.toJsonStr(point.proceed()));
        return point.proceed();
    }
  // 正确示范
@Around("log()")
    public Object around(ProceedingJoinPoint point) throws Throwable {
        System.out.println("arround");
        Object proceed = point.proceed();
        logger.info("【返回值(return)】:"+JSONUtil.toJsonStr(proceed));
        return proceed;
    }

错误原因:调用了两次 point.proceed() 方法,导致 @Before 的方法执行了两次


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM