Я хотел бы использовать aspectj для профилирования библиотеки. Мой план состоял в том, чтобы пометить методы, которые требуют профилирования, аннотацией:
@Profiled("logicalUnitOfWork")
И затем есть аспект, который запускается до и после методов, которые используют logicalUnitOfWork
для выделения профилированного содержимого.
Итак, мой pointcut для начала выглядит следующим образом. Обратите внимание, что у меня нет аргумента для аннотации здесь; это одна из вещей, которые я не знаю, как это сделать:
pointcut profiled() : execution(@Profiled * *());
before() : profiled () {
// : the profiled logical name is in this variable:
String logicalEventType;
Profiler.startEvent (logicalEventType);
}
after() returning : profiled() {
// : the profiled logical name is in this variable:
String logicalEventType;
Profiler.endEvent (logicalEventType);
}
Профилируемые методы будут определены следующим образом:
@Profiled("someAction")
public void doAction (args...) {}
Короче говоря, как я могу получить значение аннотации @Profiled
в аспекте? Мне не нужно ограничивать, какое профилирование происходит в зависимости от значения, мне просто нужно, чтобы оно было видно совету. Кроме того, нужно ли для сохранения аннотации установить время выполнения, чтобы это работало, или вместо этого можно использовать сохранение на уровне класса?