0

我最近开始使用AspectJ LTW。我将 Eclipse 与AJDT一起使用。我基本上使用“outjar”选项来使用已编译的 .aj 文件创建我的“AspectJ 库(.jar 文件)”。

下一步是在“普通”Eclipse Java 项目中使用这个 jar 文件,如果我在 javaagent 路径上有 aspectjweaver.jar 库,它就可以完美运行:

-javaagent:lib/aspectjweaver.jar

我的下一个目标是在这个“普通”java 项目中使用第二个 aop.xml 文件。META-INF/aop.xml如果文件位于类加载器搜索路径上,即使这样也能很好地工作。现在我发现了这一点:

http://www.eclipse.org/aspectj/doc/released/README-1612.html

(向下滚动到“aop.xml 中更灵活的切入点/代码连接”)

以下 XML 规范可以正常工作:

<aspectj>
 <aspects>
  <concrete-aspect name="MyAspect">
   <before pointcut="set(* *.myStringField) AND args(message)"
       invokeClass="my.package.SomeRegularJavaClass" invokeMethod="someMethod(JoinPoint tjp, java.lang.String message)" />
  </concrete-aspect>
 </aspects>
</aspectj>

但我真正感兴趣的是将我自己的参数/变量/消息“传递”给方法someMethod。就像是:

<aspectj>
 <aspects>
  <concrete-aspect name="MyAspect">
   <before pointcut="set(* *.myStringField) AND args(message)"
       invokeClass="my.package.SomeRegularJavaClass" invokeMethod="someMethod(JoinPoint tjp, java.lang.String message, java.lang.String "customMessage")" />
  </concrete-aspect>
 </aspects>
</aspectj>

那么有没有办法将字符串(例如)传递给方法someMethod?或者还有其他可用的选项吗?

4

0 回答 0