2011-10-19 9 views
19

アノテーション付きのすべてのメソッド(つまり、@CatchThis)を捕捉するポイントカットを定義しようとしています。これは私自身の注釈です。Spring AOP - アノテーションを持つすべてのメソッドのポイントカット

さらに、私はLong型のメソッドの最初の引数にアクセスしたいと思います。他にも議論があるかもしれませんが、私は気にしません。


EDIT

これは私が今持っているものです。私が知らないのは、@CatchThisと注釈を付けられたメソッドの最初のパラメータを渡す方法です。

このような何かを行う必要があります
@Aspect 
public class MyAspect { 
    @Pointcut(value = "execution(public * *(..))") 
    public void anyPublicMethod() { 
    } 

    @Around("anyPublicMethod() && @annotation(catchThis)") 
    public Object logAction(ProceedingJoinPoint pjp, CatchThis catchThis) throws Throwable { 
     return pjp.proceed(); 
    } 
} 
+0

何春の注釈フレームワークを使用してはどうですか? –

+0

投稿を更新しました。 – emesx

答えて

22

@Aspect 
public class MyAspect{ 

    @Pointcut(value="execution(public * *(..))") 
    public void anyPublicMethod() { 
    } 

    @Around("anyPublicMethod() && @annotation(catchThis) && args(.., Long ,..)") 
    public Object logAction(
     ProceedingJoinPoint pjp, CatchThis catchThis, Long long) 
     throws Throwable { 

     return pjp.proceed(); 
    } 
} 
+0

私の投稿を更新しました。あなたはあなたのスニペットで同じことをすることができますか?私はとても感謝しています。 – emesx

+0

@elmes OK、更新 –

+0

ありがとうございました。最初の引数ではないONE Long引数を持つメソッドをキャッチすることは可能ですか?それは最初、2番目または最後になる可能性がありますか? – emesx

関連する問題