Вопрос

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

Решение

Что -то подобное должно сделать:

@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();
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top