使用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之间的桥梁。
我是 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之间的桥梁。