web-dev-qa-db-ja.com

SpringAOP-アノテーション付きのすべてのメソッドのポイントカット

(つまり)@CatchThisで注釈が付けられたすべてのメソッドをキャッチするポイントカットを定義しようとしています。これは私自身の注釈です。

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


編集

これは私が今持っているものです。私が知らないのは、@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();
    }
}
20
emesx

このようなことをする必要があります:

@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();
    }
}
22