谁能告诉我 Joinpoint
和 Proceedingjoinpoint
之间有什么区别?
aspect类的方法什么时候用 Joinpoint
和 Proceedingjoinpoint
?
我在我的 AspectJ 类中使用了 JoinPoint
,例如:
@Pointcut("execution(* com.pointel.aop.test1.AopTest.beforeAspect(..))")
public void adviceChild(){}
@Before("adviceChild()")
public void beforeAdvicing(JoinPoint joinPoint /*,ProceedingJoinPoint pjp - used refer book marks of AOP*/){
//Used to get the parameters of the method !
Object[] arguments = joinPoint.getArgs();
for (Object object : arguments) {
System.out.println("List of parameters : " + object);
}
System.out.println("Method name : " + joinPoint.getSignature().getName());
log.info("beforeAdvicing...........****************...........");
log.info("Method name : " + joinPoint.getSignature().getName());
System.out.println("************************");
}
但我在其他资源中看到的是:
@Around("execution(* com.mumz.test.spring.aop.BookShelf.addBook(..))")
public void aroundAddAdvice(ProceedingJoinPoint pjp){
Object[] arguments = pjp.getArgs();
for (Object object : arguments) {
System.out.println("Book being added is : " + object);
}
try {
pjp.proceed();
} catch (Throwable e) {
e.printStackTrace();
}
}
这里 ProceedingJoinPoint
与’JointPoint ? Also what will
pjp.proceed()` 相比有何不同?
原文由 Human Being 发布,翻译遵循 CC BY-SA 4.0 许可协议
这意味着在调用
com.mumz.test.spring.aop.BookShelf.addBook
方法之前aroundAddAdvice
方法被调用。System.out.println("Book being added is : " + object);
操作完成后。它将调用您的实际方法addBook()
。pjp.proceed()
将调用addBook()
方法。