2013-02-10 40 views
8

我創建了自定義註釋@MyAnn。我會用它註釋方法參數。AspectJ - 獲取註釋方法參數的值

例如:public static call(@MyAnn String name){...}

使用AspectJ,我怎麼能訪問和更新與註解所有參數的值是多少?

我發現了一些示例代碼,展示瞭如何創建定製定製註釋的切入點,here

所以現在我創建了一個切入點。 但我不知道熱得到的參數值有MyAnn註釋。

@Aspect 
public class MyAnnAspect { 

    @Around("execution(@my.package.test.MyAnn") // I hope this pointcut will work 
    public void changeParameter(final ProceedingJoinPoint pjp) throws Throwable { 
     // How I can there get parameter value (and chage it)? 
    } 
} 

回答

17

我不認爲切入點的工作,因爲它不是被註釋的方法,順便可以這樣做:

MethodSignature ms = (MethodSignature) pjp.getSignature(); 
Method m = ms.getMethod(); 
Annotation[][] pa = m.getParameterAnnotations(); 

現在你可以遍歷註解,並找到通過調用pjp.getArgs(),正確的註釋(如果存在)獲取參數值。

+1

如何從getArgs獲取字段名稱/字段值。 ?它只會給出所有的值。與註釋沒有關係。 – 2015-02-03 07:29:22