Domanda

Sto cercando di definire un pointcut, che cogliere ogni metodo che viene annotato con (vale a dire) @CatchThis. Questa è la mia annotazione.

Inoltre, mi piacerebbe avere accesso al primo argomento del metodo, che sarà di tipo Long. Ci possono essere altri argomenti troppo, ma non mi importa di loro.


Modifica

Questo è ciò che ho in questo momento. Quello che non so è come passare il primo parametro del metodo annotato 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();
    }
}
È stato utile?

Soluzione

Something like this should do:

@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();
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top