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