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 java : Sélectionner tout - Visualiser dans une fenêtre à part
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 java : Sélectionner tout - Visualiser dans une fenêtre à part
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 java : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Alors que je m'attends à voir :Inside update
Inside 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);Inside update
Inside insert
Je suis un advice @After !!! de la méthode insert
Je suis un advice @After !!! de la méthode update
Merci d'avance pour votre aide.
Partager