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

时间:2017-04-18 20:30:57

标签: aop aspectj spring-aop interceptor

我是AOP的新手,已经完成了这里的教程:https://eclipse.org/aspectj/并对方面的工作方式有了基本的了解。

这就是我想要做的。

有一个名为“MyAnnotation”的@annotation,让我说我有一个像这样装饰的方法

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

我写了一个像这样的方面类:

@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在依赖包中,我不拥有代码。它扩展了MethodInterceptor中的org.aopalliance.intercept类。在调用MyMethod之前,我需要在我的advice方法中执行一些处理。我不能使用Guice.bindInterceptor并且正在寻找类似的替代方案。我不知道如何获得我可以传递给调用方法的methodInvocation对象。

谢谢!

1 个答案:

答案 0 :(得分:0)

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

这是aspectJ和AOPAlliance之间的桥梁。