2015-06-09 81 views
3

我想基於一個annotaion創建一個切入點

@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

安迪克萊門特提供一個正確的答案。我認爲接受答案是禮貌的問題,而不是忽視它。 – kriegaex

回答

1

很明顯,如果建議的方法具有您正在查找的註釋值,但您可以檢查該建議,但這並不理想(它是運行時檢查)。你的情況,你可以只使用語法:

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

這裏有信息的一點點註釋值匹配:https://eclipse.org/aspectj/doc/released/README-160.html