[AOP] L'advice n'est pas toujours appelé
Bonjour,
Je suis en Spring 2.5
J'ai un petit problème dans l'application des advices avec Spring AOP :
Au départ j'ai le code suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
...
...
public void insert(InputStream inputStream, AbstractDocument document) throws FileSystemException {
System.out.println("Inside insert");
}
public void update(InputStream inputStream, AbstractDocument document) throws FileSystemException {
System.out.println("Inside update");
this.insert(null, null);
} |
Et la définition d'un advice comme suit :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
@After("(documentInsertOperation() || documentUpdateOperation() || documentDeleteOperation()) "
+ "&& args(..,document)")
public void backup(JoinPoint jp, AbstractDocument document) {
System.out.println("Je suis un advice @After !!! de la méthode " + jp.getSignature().getName());
...
...
/*
* Pointcuts definitions
*/
@Pointcut("execution(* dgt.tss.services.DocumentService.insert(..))")
private void documentInsertOperation() {
}
@Pointcut("execution(* dgt.tss.services.DocumentService.update(..))")
private void documentUpdateOperation() {
}
...
... |
Et une classe de test unitaire avec une méthode pour tester l'AOP sur mes méthode update et insert :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
...
...
public void testAOP() {
try {
documentService.update(null, null);
} catch (FileSystemException e1) {
e1.printStackTrace();
}
...
...
} |
Et je vois dans la console :
Citation:
Inside update
Inside insert
Je suis un advice @After !!! de la méthode update
Alors que je m'attends à voir :
Citation:
Inside update
Inside insert
Je suis un advice @After !!! de la méthode insert
Je suis un advice @After !!! de la méthode update
On dirait que l'advice ne s'applique pas à ma méthode insert ? des idées ? Mes pointcuts ne sont pas biens définis ? un problème avec l'utilisation de this dans this.insert(null, null);
Merci d'avance pour votre aide.