是的,@Around
注解可以获取程序执行后的返回值。在 @Around
注解的方法中,你可以访问到被拦截方法的返回值。以下是一个使用 Spring AOP 的例子:
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class MyAspect {
@Around("execution(* com.example.service.*.*(..))")
public Object aroundAdvice(ProceedingJoinPoint joinPoint) throws Throwable {
// 在方法执行前的逻辑
System.out.println("Before method execution");
// 调用目标方法并获取返回值
Object result = joinPoint.proceed();
// 在方法执行后的逻辑
System.out.println("After method execution");
// 返回目标方法的返回值
return result;
}
}
在这个例子中,aroundAdvice
方法通过 joinPoint.proceed()
调用了目标方法,并将返回值存储在 result
变量中。然后,你可以在 aroundAdvice
方法中对返回值进行处理,或者直接将其返回给调用者。