原因分析
- Aop 配置類加載了兩次
- @Around 獲取返回值操作不當
解決方法
- 配置類只需要加兩個注解,其他地方無需修改
@Aspect
@Component
public class AopConfig {}
- 獲取返回值的錯誤操作
// 錯誤版本
@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 的方法執行了兩次