@LookAtThisMethod
と@LookAtThisParameter
の2つの注釈があります。メソッドのポイントカットを@LookAtThisMethod
とすれば、どのようにして@LookAtThisParameter
という注釈付きのメソッドのパラメータを抽出できますか?例えば注釈付きのパラメータをポイントカット内に取得
:
@Aspect
public class LookAdvisor {
@Pointcut("@annotation(lookAtThisMethod)")
public void lookAtThisMethodPointcut(LookAtThisMethod lookAtThisMethod){}
@Around("lookAtThisMethodPointcut(lookAtThisMethod)")
public void lookAtThisMethod(ProceedingJoinPoint joinPoint, LookAtThisMethod lookAtThisMethod) throws Throwable {
for(Object argument : joinPoint.getArgs()) {
//I can get the parameter values here
}
//I can get the method signature with:
joinPoint.getSignature.toString();
//How do I get which parameters are annotated with @LookAtThisParameter?
}
}
はそんなにありがとうインターフェイスに属しているケースをカバーしています。私はこの答えを見つける前に多くの時間を無駄にしました。 –
私にとっては、 'signature.getMethod()。getParameterAnnotations()'は、インターフェースではなく実装のメソッドを返します。したがって、注釈が実装上にのみある場合、この呼び出しではnullになります。 – oleh
'signature.getMethod()。getAnnotation()'も動作します。アノテーションは '@Retention(RetentionPolicy.RUNTIME)'を持つべきであることを覚えておいてください。 – Kaushik