9

カスタムアノテーションを作成しまし@MyAnnた。そして、メソッドパラメータに注釈を付けます。

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

AspectJを使用して、注釈で注釈が付けられたすべてのパラメーターの値にアクセスして更新するにはどうすればよいですか?

カスタムアノテーションをターゲットにしたポイントカットを作成する方法を示すサンプルコードをここで見つけまし

だから今のところ、私はポイントカットでアスペクトを作成しました。しかし、。で注釈が付けられたパラメーターの値を取得するのがホットかどうかはわかりません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)? 
    }
}
4

1 に答える 1

17

あなたができる方法で、それは注釈が付けられた方法ではないので、私はそのポイントカットがうまくいくとは思いません:

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

これで、注釈を繰り返し処理し、適切な注釈を見つけることができます。存在する場合は、を呼び出してパラメーター値を取得しますpjp.getArgs()

于 2013-02-10T18:01:50.067 に答える