我正在使用X.jar并添加到我的AspectJ项目(在eclipse中)。我已经为X.jar中的方法myMethod()编写了切入点和建议。
但aspectj并没有拦截这种方法调用。
如何告诉aspectj拦截外部jar上的方法调用。或者它不可能吗?
由于
答案 0 :(得分:9)
有两种选择:
a)将方面汇编到JAR中 b)使用加载时间编织(我会选择那个)
这两个都是高级主题,我建议您阅读AspectJ in Action (2nd Ed) by Ramnivas Laddad以了解详情。
澄清:有不同类型的切入点。如果您的代码调用库的方法,您当然可以拦截这些调用,因为它们会在代码中发生。所以call()
切入点可以工作,但是execute()
(和许多其他)切入点不会,因为它们会改变执行方法,而不是在你的代码库中。因此,您必须更改库的字节代码(选项a)或更改其加载到应用程序中的方式(选项b)。