Я пытаюсь заставить аспектj перехватывать аннотированные методы:
@Aspect
public class InterceptMeAspect {
@Around("execution(* *(..)) && within(@InterceptMe *)")
public Object doIntercept(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
System.out.println("intercepted:");
return proceedingJoinPoint.proceed();
}
}
public class InterceptedExample {
@InterceptMe
public void doSomething(){
}
}
Для краткости я удалил! Inside (InterceptMeAspect), но он все равно не слишком перехватывает.Если я удаляю ограничение аннотации (в пределах (@InterceptMe *)), оно работает, но перехватывает все и создает большую проблему.
Выходной байт-код, кажется, содержит аннотации без изменений, поэтому я ожидаю, что аннотациякритерии для соответствия.Я делаю или пытаюсь сделать ткачество во время компиляции.Это важно, потому что у меня есть другой аспект, который работает, используя тот же подход, описанный выше.Я подозреваю, что этот аспект мешает этому, но последний байт-код не должен иметь аннотации, верно?
РЕДАКТИРОВАТЬ: Это код для другого аспекта:
@Around(
"execution(protected * *(..)) && !within(com.walterjwhite.logging..*) && !call(*.new(..)) && within(@ContextualLoggable *) && !within(@NonLoggable *)")
Iиметь общий аспект ведения журнала и особый контекстный аспект ведения журнала.Я предполагаю, что это также неправильно написано и должно соответствовать формату сверху.