2013-02-10 9 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からフィールド名/フィールド値を取得できますか。 ?それはすべての値だけを与えます。注釈との関連はありません。 –

関連する問題