2011-10-19 19 views
19

Sto provando a definire un collegamento di punti, che catturerebbe ogni metodo annotato con (ad esempio) @CatchThis. Questa è la mia annotazione.Spring AOP - collegamento di punti per ogni metodo con un'annotazione

Inoltre, mi piacerebbe avere accesso al primo argomento del metodo, che sarà del tipo Long. Possono esserci anche altri argomenti, ma a me non interessa.


EDIT

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(); 
    } 
} 
+0

Cosa succede ad usare il framework Spring annotazioni? –

+0

Ho aggiornato il mio post. – emesx

risposta

22

Qualcosa del genere dovrebbe fare:

@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(); 
    } 
} 
+0

Ho aggiornato il mio post. Potresti fare lo stesso con il tuo snippet? Sarei molto grato – emesx

+0

@elmes OK, aggiornato –

+0

Grazie. è possibile, per catturare metodi che hanno UNO lungo argomento che non è necessariamente il primo argomento - può essere primo, secondo ... o ultimo? – emesx

Problemi correlati