Я пытаюсь разобраться в Spring AOP и сейчас сталкиваюсь с проблемой, что второй аспект, аннотированный TrackedSubTask
, не вызывается, в то время как Tracked
работает. Приветствуется любая помощь или подсказка.
Вот мои аннотированные классы:
@RestController
public class Demo {
@Tracked
@RequestMapping("/")
public String index() {
DemoImpl bar = new DemoImpl();
bar.foo();
return "Greetings from Spring Boot!";
}
}
public class DemoImpl{
@TrackedSubTask
public void foo() {
System.out.println("foo");
}
}
Вот мои аннотации:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Tracked {
}
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface TrackedSubTask {
}
Вот мои аспекты:
@Aspect
@Component
class MyAspect {
@Around("@annotation(annotation)")
public Object first(ProceedingJoinPoint joinPoint, Tracked annotation) throws Throwable {
Object proceed = joinPoint.proceed();
return proceed;
}
@Around("@annotation(subTaskAnnotation)")
public Object second(ProceedingJoinPoint joinPoint, TrackedSubTask subTaskAnnotation) throws Throwable {
Object proceed = joinPoint.proceed();
return proceed;
}
}