AspectJ JoinPoint - это интерфейс, а ProceedingJoinPoint - это также интерфейс, расширяющий точку соединения.
Однако, когда я использую их в аспекте, я могу использовать их экземпляры и их методы напрямую.
@Around("execution(* com.luv2code.aopdemo.dao.service.*.getFortune(..))")
public Object aroundGetFortune(
ProceedingJoinPoint proceedingJoinPoint) throws Throwable{
String method = proceedingJoinPoint.getSignature().toShortString();
System.out.println("\n=======> Executing @Around on method: " + method);
return null;
}
Как это возможно? Разве интерфейс не должен быть реализован некоторыми классами, которые будут использоваться?
Или это то, что приведение происходит за кулисами в AspectJ?
Спасибо,