spring-aop的AfterReturningAdvice的执行,其实就跟责任链中在调用invokeHandlers.invole()之后写的逻辑的原理是一样的。看下图:
再看AfterReturningAdviceInterceptor的代码:
public Object invoke(MethodInvocation mi) throws Throwable {
Object retVal = mi.proceed();
this.advice.afterReturning(retVal, mi.getMethod(), mi.getArguments(), mi.getThis());
return retVal;
}
可以看到就是在业务逻辑之前什么都不做,只是保存业务逻辑执行的结果,然后执行AfterReturningAdvice的逻辑,并返回。仅此而已,其实跟责任链中在调用invokeHandlers.invole()之后写的逻辑的原理是一模一样的。