我有两个项目。一个是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依赖项将库置于服务的类路径上)以来,注释就没有执行-我怀疑切入点表达式需要修改。
有什么想法吗?