AOP的后置处理@AfterReturning怎么拿returning
时间: 2024-03-23 21:32:26 浏览: 21
AOP的后置处理@AfterReturning可以使用returning属性来获取目标方法的返回值。在注解中使用returning属性来指定一个用于接收返回值的变量名,该变量最好使用Object类型的,目标方法的返回值可以是任何类型的。在后置通知方法中,可以将该变量作为参数来获取目标方法的返回值。例如,可以使用@AfterReturning注解来实现一个后置通知方法,并在该注解中使用returning属性来指定一个用于接收返回值的变量名,然后在方法中使用该变量来获取目标方法的返回值。具体实现可以参考引用和引用中的代码示例。
相关问题
@AfterThrowing和@AfterReturning执行顺序
在 Spring AOP 中,@AfterReturning 和 @AfterThrowing 都是后置通知,它们的执行顺序是:
1. 当目标方法执行成功时,@AfterReturning 在目标方法返回后执行;
2. 当目标方法抛出异常时,@AfterThrowing 在目标方法抛出异常后执行。
因此,如果目标方法正常返回,那么@AfterReturning会先于@AfterThrowing执行;如果目标方法抛出异常,那么@AfterThrowing会先于@AfterReturning执行。
aop后置切面获取返回值
在 AOP 后置切面中获取返回值,可以通过 `JoinPoint` 参数中的 `getArgs()` 方法获取方法的参数列表,然后通过 `ProceedingJoinPoint` 接口的 `proceed()` 方法执行目标方法,并获取目标方法的返回值。以下是一个示例代码:
```java
@Aspect
@Component
public class MyAspect {
@AfterReturning(value = "execution(* com.example.demo.service.UserService.getUserById(..))", returning = "result")
public void afterReturning(JoinPoint joinPoint, Object result) {
System.out.println("方法返回值:" + result.toString());
}
}
```
在上面的代码中,`@AfterReturning` 注解指定了切点表达式和返回值参数名 `result`。在方法执行完毕后,可以通过 `result` 参数获取方法的返回值。