AspectJ LTW со «вторым» файлом aop.xml - PullRequest
0 голосов
/ 13 марта 2012

Я недавно начал использовать AspectJ LTW .Я использую Eclipse с AJDT .Я в основном использую опцию «outjar» для создания моей «библиотеки AspectJ (файл .jar)» с скомпилированными файлами .aj.

Следующим шагом является использование этого jar-файла в «нормальном» Java-проекте Eclipse, который просто отлично работает, если у меня есть библиотека aspectjweaver.jar по пути javaagent:

-javaagent:lib/aspectjweaver.jar

Мой следующийцель состоит в том, чтобы использовать второй файл aop.xml в этом «обычном» Java-проекте.Даже это хорошо работает, если файл 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?Или есть другие варианты?

...