我正在尝试根据注释的参数创建切入点
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface MyAnnotation {
Class<? extends ABC> style() default A.class;
}
我目前使用的切入点是:
@Pointcut("execution(@com.something.MyAnnotation * *(..))")
public void dummyMethod() {
}
@Around("method()")
public Object actualFunc(ProceedingJoinPoint joinPoint) throws Throwable {
//stuff
}
但遗憾的是,这种风格的所有价值都会激活。
答案 0 :(得分:1)
显然,如果建议的方法具有您要查找的注释值,您可以检查建议,但这不是理想的(它是运行时检查)。在您的情况下,您可以使用语法:
@Pointcut("execution(@com.something.MyAnnotation(style=B.class) * *(..))")
此处有一些关于注释值匹配的信息:https://eclipse.org/aspectj/doc/released/README-160.html