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 :

Débutant spring AOP


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif
    Inscrit en
    Mars 2005
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 42
    Par défaut Débutant spring AOP
    Bonjour,

    je suis débutant en spring , comme j'ai une application qui tourne déjà en struts +hibernate donc j'ai commencé par spring AOP dans un premier lieu , et après j'ajouterai spring IOC.

    Mais j'ai des choses que j'arrive pas a comprendreexemple)

    1)Dans le springContext.xml


    Code : 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
    22
    23
    24
     
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	   xmlns:aop="http://www.springframework.org/schema/aop"
    	   xsi:schemaLocation="
    			http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    			http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
     
    	<!--	Debut de la configuration AOP -->	
    	<aop:config>
    		<aop:pointcut id="servicePointcut"  expression="execution(* ew.service.*.*(..))"/>    		
    		<aop:aspect id="loggingAspect" ref="monLogger">
    		    <aop:before method="logMethodEntry"  pointcut-ref="servicePointcut"/>    		
    		    <aop:after-returning method="logMethodExit" returning="result" pointcut-ref="servicePointcut"/>
    	    </aop:aspect>	    
    	</aop:config>
     
      	<bean id="monLogger" class="ew.aop.MonLogger"/>    
    	<!--	Fin de la configuration AOP -->	
     
    	<bean name="monService" class="ew.service.MonService" />
     
    </beans>



    MonLogger.java

    Code : 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    package ew.aop;
     
    import org.aspectj.lang.JoinPoint;
    import org.aspectj.lang.JoinPoint.StaticPart;
     
    public class MonLogger {
     
      // Cette méthode est appelée à chaque fois (et avant) qu'une méthode du package ew.service est interceptée 
      public void logMethodEntry(JoinPoint joinPoint) {
     
        Object[] args = joinPoint.getArgs();
     
        // Nom de la méthode interceptée
        String name = joinPoint.getSignature().toLongString();
        StringBuffer sb = new StringBuffer(name + " called with: [");
     
        // Liste des valeurs des arguments reçus par la méthode
        for(int i = 0; i < args.length; i++) {
          Object o = args[i];
          sb.append("'"+o+"'");
          sb.append((i == args.length - 1) ? "" : ", ");
        }
        sb.append("]");
     
        System.out.println(sb);
      }
     
      // Cette méthode est appelée à chaque fois (et après) qu'une méthode du package ew.service est interceptée 
      // Elle reçoit en argument 'result' qui est le retour de la méthode interceptée
      public void logMethodExit(StaticPart staticPart, Object result) {
     
        // Nom de la méthode interceptée
        String name = staticPart.getSignature().toLongString();
     
        System.out.println(name + " returning: [" + result + "]");
      }
     
    }

    ce que j'arrive pas a comprendre c'est :

    public void logMethodEntry(JoinPoint joinPoint) + public void logMethodExit(StaticPart staticPart, Object result) ,d'où elles ramènent leurs arguments




    Merci d'avance.

  2. #2
    Membre expérimenté Avatar de mOuLi
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2008
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2008
    Messages : 170
    Par défaut
    En fait c'est plutôt une question sur AspectJ (qui est l'outil qu'utilise Spring pour faire de l'AOP). Par défaut toutes les méthodes définissant des greffons (ou "code avices" dans la terminologie AspectJ) doivent au moins avoir un argument de type JoinPoint ou JoinPoint.StaticPart (cet argument permet de récupérer le contexte de tissage : méthode interceptée, classe appelante, classe appelée, arguments d'appels ...).
    Pour la méthode logMethodExit, c'est le positionnement de l'interception (after returning ... returning="result") qui t'oblige à avoir un 2ème argument en paramètre de la méthode (de type Object pour rester générique).

    Si tu n'es pas familier avec les concepts de la programmation orientée aspect, je te conseille de consulter la documentation d'AspectJ.

  3. #3
    Inactif
    Inscrit en
    Mars 2005
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 42
    Par défaut
    Merci MAn

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/04/2007, 08h45
  2. [Data] [débutante][spring][ibatis] Error parsing XML
    Par stardust dans le forum Spring
    Réponses: 4
    Dernier message: 12/12/2006, 17h58
  3. [Débutant] Spring par la pratique
    Par Stew dans le forum Spring
    Réponses: 2
    Dernier message: 26/09/2006, 09h43
  4. [Framework] HelloWorld avec Spring AOP
    Par LaJavanaise dans le forum Spring
    Réponses: 8
    Dernier message: 03/03/2006, 10h16

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