JoinPoint或ProceedingJoinPoint的对象如何调用方法?

问题描述 投票:0回答:1

AspectJ的JoinPoint是一个接口,ProceedingJoinPoint也是一个扩展Joinpoint的接口。

但是,当我在一个方面使用它们时,可以直接使用它们的实例和方法。

@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的幕后进行了投射吗?

谢谢,

java spring-mvc interface aspectj
1个回答
0
投票

在运行时,Spring框架提供了MethodInvocationProceedingJoinPoint的实例,该实例是ProceedingJoinPoint的实现。

source code

public class MethodInvocationProceedingJoinPoint implements ProceedingJoinPoint, JoinPoint.StaticPart {..}

要回答您的问题,是的,Spring框架具有接口的实现。

您可以调试Spring AOP程序以观察运行时发生的情况。

© www.soinside.com 2019 - 2024. All rights reserved.