У меня есть два проекта.Одним из них является сервис Spring Boot, а другим - библиотека, которая использует Spring AOP.Я создал пользовательскую аннотацию, которая будет выполняться всякий раз, когда метод аннотируется этой пользовательской аннотацией.Поскольку я хочу, чтобы эта аннотация использовалась во многих сервисах, она находится внутри библиотеки.Мой код выглядит примерно так:
Служба:
@MyCustomAnnotation
public void doSomething() {
log.info("Do something is invoked!");
}
@EnableAspectJAutoProxy
public class ApplicationConfig {
...
}
Библиотека:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MyCustomAnnotation {
...
}
@Aspect
public class ContinueTraceFromSpringKafkaEventAspect {
@Pointcut("@annotation(MyCustomAnnotation)")
public void executeMyCustomAnnotation() { }
@Before("executeMyCustomAnnotation()")
public void beforeAnnotation(JoinPoint joinPoint) {
log.info("Before annotation");
}
@After("executeMyCustomAnnotation()")
public void afterAnnotation(JoinPoint joinPoint) throws Throwable {
log.info("After annotation");
}
}
Аннотация будет успешно выполнена, когда код жилвнутри службы, но с тех пор, как она извлечена в библиотеку (и имеет библиотеку на пути к классам службы через зависимость Maven), она не выполняется - я подозреваю, что выражение pointcut нужно изменить.
Есть идеи?