Как ввести метод совета внутри уже запущенного? - PullRequest
0 голосов
/ 27 марта 2019

У меня есть метод аспекта, который выглядит следующим образом

@Around(value = "@annotation(annotation)")
public Object createSpan(ProceedingJoinPoint joinPoint, Trace annotation) {
    return joinPoint.proceed();
}

У меня есть методы, помеченные моей аннотацией @Trace. Проблема заключается в том, что все методы уровня 1 , аннотированные этой аннотацией, фиксируются рекомендациями, а методы внутри этих методов - нет. Пример:

@Trace
public void method3() {

}

@Trace
public void method1() {
    method3();
}

@Trace
public void method2() {
    method3();
}

@Trace
public void method() {
    method1();
    method2();
}

Когда клиент вызывает method(), аспект захватывает method1(), но он не захватывает вызов method3() внутри method1(), поскольку method3() уже обработан joinPoint.proceed().

Как определить желаемое поведение, чтобы все вложенные методы были также охвачены аспектом?

...