IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Java Discussion :

[AOP] L'advice n'est pas toujours appelé


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Par défaut [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 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 :
    Inside update
    Inside insert
    Je suis un advice @After !!! de la méthode update
    Alors que je m'attends à voir :
    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.

  2. #2
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Par défaut
    Hello Elitost ;-)

    Fallait écouter durant la formation ! :p

    Le problème est le this.insert();

    En faisant cela, tu travaille directement avec ton "service pojo" et non avec le proxy gérant l'AOP au dessus de ton service.
    Hikage
    SCJP / SCWCD & SCWSJD Certified / Spring Framework Certified
    [Personal Web] [CV]

    F.A.Q Spring Framework - Participez !

  3. #3
    Membre Expert
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Par défaut
    hé hé ...

    oui on s'en est rendu compte, alors le this je le remplace par quoi ? par un bean Spring qui est en fait lui même ?

    A+

Discussions similaires

  1. [sortable_elements] L'appel AJAX n'est pas toujours fait
    Par Miles Raymond dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 07/09/2009, 09h29
  2. [Framework] [AOP] L'aspect n'est pas appelé
    Par damien77 dans le forum Spring
    Réponses: 1
    Dernier message: 19/02/2009, 18h41
  3. LSMW n'est pas toujour util
    Par eddassiabdelhak dans le forum SAP
    Réponses: 1
    Dernier message: 10/02/2009, 12h15
  4. Evènement dans UserControl pas toujours appelé
    Par Ishizaki dans le forum ASP.NET
    Réponses: 4
    Dernier message: 05/05/2008, 15h53
  5. ramener un champ qui n'est pas toujours rempli
    Par digger dans le forum Langage SQL
    Réponses: 4
    Dernier message: 23/11/2006, 15h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo