У меня есть метод аспекта, который выглядит следующим образом
@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()
.
Как определить желаемое поведение, чтобы все вложенные методы были также охвачены аспектом?