Pregunta

Estoy tratando de definir un punto de punto, que atraparía todos los métodos que se anotan con (es decir) @CatchThis. Esta es mi propia anotación.

Además, me gustaría tener acceso al primer argumento del método, que será de Long escribe. También puede haber otros argumentos, pero no me importan.


EDITAR

Esto es lo que tengo ahora mismo. Lo que no sé es cómo pasar el primer parámetro del método anotado con @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();
    }
}
¿Fue útil?

Solución

Algo como esto debería hacer:

@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();
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top