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 :

Recherche d'exemple simple [Framework]


Sujet :

Spring Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 112
    Points : 65
    Points
    65
    Par défaut Recherche d'exemple simple
    Bonjour à tous

    Je suis à la recherche d'exemple d'utilisation de SPRING pour de l'AOP.
    Est il préférable d'utiliser SPRING ou ASPECTJ quel est le plus simple d'utilisation?

    Je vous remercie d'avance pour votre aide

  2. #2
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Points : 3 510
    Points
    3 510
    Billets dans le blog
    2
    Par défaut
    Pour Spring, tu as des exemple dans le package Spring lui-même.
    Pour la préférence Spring/AspectJ, regardes la doc de Spring 2.0, on y parle de l'intégration d'aspectJ et justement des avantages/inconvénients de Spring AOP vs AspectJ

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 112
    Points : 65
    Points
    65
    Par défaut
    Citation Envoyé par ego
    Pour Spring, tu as des exemple dans le package Spring lui-même.
    Pour la préférence Spring/AspectJ, regardes la doc de Spring 2.0, on y parle de l'intégration d'aspectJ et justement des avantages/inconvénients de Spring AOP vs AspectJ
    Merci

  4. #4
    Membre actif Avatar de tnodev
    Profil pro
    SSSSS
    Inscrit en
    Mai 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : SSSSS

    Informations forums :
    Inscription : Mai 2005
    Messages : 182
    Points : 231
    Points
    231
    Par défaut
    Exemple simple d'AOP inspiré du bouquin Pro Spring

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
    package mon.package;
    import java.lang.reflect.Method;
     
    import org.aopalliance.intercept.MethodInterceptor;
    import org.aopalliance.intercept.MethodInvocation;
     
    import org.apache.commons.lang.time.StopWatch;
    import org.apache.log4j.Logger;
     
     
    /**
     * Class interceptant n'importe quelle m�thode et mesure la dur�e de son
     * ex�cution.
     *
     * @author Thomas Noirez
     */
    public class PerformanceInterceptor implements MethodInterceptor {
        /*** Le log. */
        private final Logger log = Logger.getLogger(this.getClass());
     
        /*** Temps max d'execution avant le log d'un message warning. */
        private final long warningTimeInMs;
        /*** Temps max d'execution avant le log d'un message warning. */
        private final static long WARNING_TIME_IN_MS = 300;
     
        /**
         * Creates a new PerformanceInterceptor object.
         */
        public PerformanceInterceptor() {
            super();
            this.warningTimeInMs = WARNING_TIME_IN_MS;
        }
        /**
         * Creates a new PerformanceInterceptor object.
         */
        public PerformanceInterceptor(long warningTimeInMs) {
            super();
            this.warningTimeInMs = warningTimeInMs;
        }
     
        /**
         * Mesure du temps d'execution d'une methode.
         *
         * @param methodInvocation
         *
         * @return
         *
         * @throws Throwable
         *
         */
        public final Object invoke(final MethodInvocation methodInvocation)
            throws Throwable {
            StopWatch sw = new StopWatch();
            sw.start();
            Object o = methodInvocation.proceed();
            sw.stop();
            this.logInfo(methodInvocation, sw.getTime());
     
            return o;
        }
     
        /**
         * Log des infos de la duree d'execution d'une methode
         * @param methodInvocation 
         * @param ms 
         */
        private void logInfo (final MethodInvocation methodInvocation, long ms) {
            Method m = methodInvocation.getMethod();
            Object t = methodInvocation.getThis();
            String tmp = "Dur. : " + ms + " ms " + t.getClass().getName() + " " + m.getName();
     
            if ( log.isDebugEnabled() ) {
                log.debug(tmp);
            } else if ( ms > warningTimeInMs ) {
                log.warn(tmp);
            }
        }
    Dans l'application-context
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
      <bean id="performanceInterceptor" class="mon.package.PerformanceInterceptor">
          <constructor-arg><value>300</value></constructor-arg>
      </bean>
     
      <bean id="advisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
        <property name="advice"> <ref bean="performanceInterceptor"/> </property>
        <property name="patterns">
            <list>
                   <value>.+service\..+</value>
                   <value>.+Mgr\..+</value>
            </list>
        </property>
      </bean>
      <bean id="autoProxyCreator" class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" />
    La classe PerformanceInterceptor va "intercepter" l'execution de toutes les méthodes des classes qui contiennent "Mgr" et "service" en mesurant le temps d'execution. Si le temps d'execution est supérieur à 300ms, alors log..

    voilà j'espére que ça pourra t'aider

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 112
    Points : 65
    Points
    65
    Par défaut
    merci de ta réponse

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/02/2010, 21h09
  2. Recherche d'un exemple simple d'utilisation d'une signature
    Par rambc dans le forum Général Python
    Réponses: 2
    Dernier message: 26/04/2009, 20h33
  3. [OPAL] Recherche exemple simple
    Par COGAN dans le forum Bibliothèques
    Réponses: 4
    Dernier message: 10/09/2007, 15h05
  4. [shlex] recherche exemples simples
    Par dervish dans le forum Général Python
    Réponses: 2
    Dernier message: 24/11/2006, 09h45
  5. recherche exemple simple pour corba en c++
    Par Pinggui dans le forum CORBA
    Réponses: 4
    Dernier message: 06/05/2002, 11h29

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