AspectJ указывает на вызов метода (даже если он вызывается во внешних библиотеках)

У меня возникли некоторые трудности с использованием AJDT. Одна из вещей, которые я хотел бы иметь, это запись каждого метода, вызываемого для данного типа, например, LinkedList. Что я заметил, так это то, что, используя pointcut ниже, я могу просто пересекать вызовы методов для любого метода, называемого add, для любого экземпляра, который реализует интерфейс Collection:

pointcut CollectionAddCallPointcut(): call(* java.util.Collection+.add(..));

Насколько я вижу, это исключает вызовы методов, сделанные во внешних библиотеках, но они были бы очень полезны для меня. Как я могу это решить?


person rnunes    schedule 08.01.2013    source источник


Ответы (1)


У вас есть два варианта:

  1. Используйте переплетение времени загрузки. Это объединит все классы по мере их загрузки загрузчиком классов. Единственное предупреждение состоит в том, что сложно вплести в классы jdk.
  2. Выполните объединение во время компиляции всех библиотек, к которым вы хотите применить ваш pointcut.
person Andrew Eisenberg    schedule 09.01.2013