根据注释参数创建切入点

时间:2015-06-09 17:53:21

标签: java java-8 aspectj

我正在尝试根据注释的参数创建切入点

@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
}

但遗憾的是,这种风格的所有价值都会激活。

1 个答案:

答案 0 :(得分:1)

显然,如果建议的方法具有您要查找的注释值,您可以检查建议,但这不是理想的(它是运行时检查)。在您的情况下,您可以使用语法:

@Pointcut("execution(@com.something.MyAnnotation(style=B.class) * *(..))")

此处有一些关于注释值匹配的信息:https://eclipse.org/aspectj/doc/released/README-160.html