Sto usando Spring 3.1.2.RELEASE con cglib in fase di caricamento e sto cercando di ottenere consigli per lavorare con un metodo che ha annotazioni personalizzate e parametri annotati.Come si passano gli argomenti al consiglio Spring AOP con i parametri annotati?
Consigli:
@Aspect
public class MyAdvice
{
@Around("execution(@com.mycompany.locking.Lock * *(@com.mycompany.locking.LockVal(*), ..)) " +
"&& args(batch) && @args(propertyToLock)"
public Object lockAndProceed(ProceedingJoinPoint pjp, Object batch, LockVal propertyToLock) throws Throwable {
//Do stuff....
pjp.proceed();
}
}
Qui è la classe che sto testando:
public interface UpdateManager
{
public void processUpdate(MyBatchObject batch);
}
public class UpdateManagerImpl implements UpdateManager
{
@Lock
public void processUpdate(@LockVal("lockValue") MyBatchObject batch)
{
//Do stuff...
}
}
Il problema è che non riesco a ottenere la consulenza da eseguire. Se rimuovo le condizioni @args e args nel pointcut, il consiglio scatta, ma poi devo scavare attraverso il ProceedingJoinPoint per ottenere il parametro di cui ho bisogno.
Perché non viene attivato il consiglio? Ho fatto qualcosa di male?
Edit: Il seguente pointcut funziona come programma autonomo con la primavera:
@Aspect
public class MyAdvice
{
@Around("execution(@com.mycompany.locking.Lock * *(@com.mycompany.locking.LockVal(*), ..)) " +
"&& args(batch)"
public Object lockAndProceed(ProceedingJoinPoint pjp, Object batch) throws Throwable {
//Do stuff....
pjp.proceed();
}
}
Tuttavia, non funziona in JBoss 6 usando la tessitura load-time. Suppongo che la mia domanda dovrebbe essere, quindi, perché funziona come un programma autonomo ma non sotto JBoss 6?
So che questo è vecchio, ma ancora elencato come senza risposta. Vorresti accettare e revocare la mia risposta se mi sembra opportuno? Grazie. – kriegaex
Ora sono passato da quel progetto, ma posso dire che il codice non ha mai funzionato, indipendentemente da come l'ho eseguito. Ricordo che aveva qualcosa a che fare con il flatloader + cglib in JBoss 6, che differiva dalle versioni precedenti. – Brad