使用AspectJ拦截方法调用并将其绑定到另一个方法

Using AspectJ to intercept method call and bind it to another method

我是 AOP 新手,已经阅读了此处的教程:https://eclipse.org/aspectj/ 并对方面的工作原理有了基本的了解。

这就是我想要做的。

有一个名为 "MyAnnotation" 的 @annotation,假设我有一个这样装饰的方法

@MyAnnotation
public void MyMethod() {
    //something here
}

我写了一个方面class是这样的:

@Aspect
public class MyAspect { 

@Around("@annotation(MyAnnotation)")
public void MyAdvice(ProceedingJoinPoint p) throws Throwable {
    // I want to call an intereceptor here, for example
    SomeInterceptor.invoke(methodInvocation)
    p.proceed();
}
}

SomeInterceptor 在依赖包中,我不拥有代码。它在 org.aopalliance.intercept 中扩展了 MethodInterceptor class。在调用 MyMethod 之前,它会做一些我需要在我的建议方法中做的处理。我不能使用 Guice.bindInterceptor 并且正在寻找类似的替代方法。我不确定如何获得可以传递给调用方法的 methodInvocation 对象。

谢谢!

这就是我需要的:https://github.com/eclipse/org.aspectj/tree/master/docs/sandbox/aopalliance

这是aspectJ和AOPAlliance之间的桥梁。