Bất kỳ ai có thể cho tôi biết sự khác nhau giữa Joinpoint
và Proceedingjoinpoint
là gì?Joinpoint VS ProceedingJoinPoint trong AOP sử dụng aspectJ?
Khi nào sử dụng Joinpoint
và Proceedingjoinpoint
trong phương pháp của lớp khía cạnh?
tôi đã sử dụng JoinPoint
trong tôi AspectJ class
như,
@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("************************");
}
Nhưng một số những gì tôi nhìn thấy trong các nguồn lực khác là,
@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();
}
}
đây những gì ProceedingJoinPoint
sẽ làm đặc biệt so sánh với 'JointPoint`?
Ngoài ra, những gì pjp.proceed()
sẽ làm gì cho chúng tôi?
Thans for your reply .. Vì vậy, bạn đang nói 'pjp.proceed()' sẽ gọi phương thức 'addBook()' hai lần? –
Không, trước tiên nó sẽ gọi phương thứcAddAdvice. Sau đó, nó sẽ gọi addBook(). –
Bạn có thể xem bằng cách gỡ lỗi. –