Spring AOP - pointcut per ogni metodo con un'annotazione
-
26-10-2019 - |
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();
}
}
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