【发布时间】:2020-05-13 20:03:37
【问题描述】:
如何使用@AfterReturning 建议修改值,它适用于除 String 之外的任何对象。我知道字符串是不变性的。以及如何在不更改 AccountDAO 类中 saveEverything() 函数的返回类型的情况下修改字符串? 这是代码sn-p:
@Component
public class AccountDAO {
public String saveEverything(){
String save = "save";
return save;
}
}
和方面:
@Aspect
@Component
public class AfterAdviceAspect {
@AfterReturning(pointcut = "execution(* *.save*())", returning = "save")
public void afterReturn(JoinPoint joinPoint, Object save){
save = "0";
System.out.println("Done");
}
}
和主应用程序:
public class Application {
public static void main(String[] args) {
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext(JavaConfiguration.class);
AccountDAO accountDAO = context.getBean("accountDAO", AccountDAO.class);
System.out.println(">"+accountDAO.saveEverything());;
context.close();
}
}
【问题讨论】:
-
为什么要实现这样的目标?您可以直接返回“0”对。如果仍然需要,Joinpoint 包含基于您可以执行某些操作的返回值。
-
我想修改字符串,然后通过方面将其传递给方法
-
你可以参考这篇文章,你可以使用 around aspect 并改变它看起来的返回值,stackoverflow.com/questions/14017860/…。希望这会有所帮助。
标签: java spring spring-aop