【发布时间】:2022-05-04 01:46:41
【问题描述】:
是否可以从 Spring AOP 中的同一个通知中获取返回值和方法参数?
我正在尝试基于返回值和方法参数实现一些登录。
所有这些信息都需要在建议中使用以实现我的业务逻辑。
例如:
MyObject testMethod(String arg 1, String arg2){
..
..
return myObject;
}
对于这种情况,我需要 myObject、arg1 和 arg2。
我在下面的代码中尝试了两个不同的注释:@After 和 @AfterReturning,如下所示:
@AfterReturning(value="execution(* com.example.aop.service.TestServiceImpl.printTestData(..))", returning="test")
public void checkSomethingAfter(JoinPoint joinPoint, Test test) {
System.out.println("------------AFTER RETURNING-----------");
System.out.println("After execution - 111 " + joinPoint.getArgs());
System.out.println("After execution - test: " + test);
System.out.println("-------------------------------------");
}
// @After(value = "execution(* com.example.aop.service.TestServiceImpl.printTestData(..)) and args()")
@After(value = "execution(* com.example.aop.service.TestServiceImpl.printTestData(..)) && args(id)")
public void afterAdvice(JoinPoint joinPoint, int id) {
System.out.println("After method:" + joinPoint.getSignature());
System.out.println("Creating Test with id - " + id);
}
问题是,我在@After 中获取参数并在@Afterreturning 中返回值。我的要求是同时在一个方法中获取返回值和参数。
我该怎么做?
【问题讨论】:
标签: java spring aop spring-aop