Spring AOP - pointcut для каждого метода с аннотацией - PullRequest
20 голосов
/ 19 октября 2011

Я пытаюсь определить pointcut, который бы перехватывал каждый метод, помеченный (т.е.) @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();
    }
}

1 Ответ

22 голосов
/ 19 октября 2011

Примерно так должно поступить:

@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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...