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 : Pourquoi utiliser une méthode plutôt que déclarer plusieurs fois @annotation ?


Sujet :

Spring Java

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2014
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2014
    Messages : 101
    Points : 71
    Points
    71
    Par défaut AOP : Pourquoi utiliser une méthode plutôt que déclarer plusieurs fois @annotation ?
    Bonjour,

    Je suis un peu perdu. Suite à réalisation d'exemples sur internet, j'ai constaté que parfois, on passe par une méthode vide où l'on définit le pointcut.
    Ci-dessous, on passe par deux déclarations de l'advice sans utiliser @pointcut :

    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
     
    @Component
    @Aspect
    public class TestAppli {
     
        private static final Logger LOGGER = LoggerFactory.getLogger(TestAppli.class);
     
        @Before("@annotation(Loggable)") 
        public void method1(JoinPoint joinPoint){
            LOGGER.info("method 1 est appelée");
        }
     
        @Before("@annotation(Loggable)") 
        public void method2(JoinPoint joinPoint){
            LOGGER.info("method 2 est appelée");
        }   
    }
    Après, ci-dessous, on passe par une méthode avec déclaration du pointcut et appel de la méthode dans les advices @Before :

    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
     
    @Component
    @Aspect
    public class TestAppli{
     
        private static final Logger LOGGER = LoggerFactory.getLogger(TestAppli.class);
     
        @Pointcut("@annotation(Loggable)")
        public void executeLogging(){
        }
     
        @Before("executeLogging()")
        public void method1(JoinPoint joinPoint){
            LOGGER.info("method 1 est appelée");
        }
     
        @Before("executeLogging()")
        public void method2(JoinPoint joinPoint){
            LOGGER.info("method 2 est appelée");
        }
     
    }
    S'il vous plait, quel est l'intérêt de passer par : executeLogging() au sein des advices ?

    Je vous remercie d'avance pour la prise en considération de cette question.

    Cordialement,

    Vinz

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    l'intérêt du @PointCut, si je ne dis pas de bêtise, c'est de ne pas devoir répéter plusieurs fois l'expression de matching. Quand tu as des PointCut un chouilla complexe, ça éviter les copier coller qui induiraient inévitablement des erreurs de refactoring.

    Comme dit dans la doc de sprint
    The pointcut expression may be either a simple reference to a named pointcut, or a pointcut expression declared in place.

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/02/2017, 13h16
  2. Utiliser une macro vba sous sas (plusieurs fois)
    Par xavier_dcf dans le forum Macro
    Réponses: 0
    Dernier message: 24/03/2016, 16h14
  3. Utiliser une transaction plutôt que des tables temportaires
    Par stolx_10 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 17/11/2008, 18h27
  4. [C#]Pourquoi utiliser une structure plutôt qu'une classe?
    Par egoom dans le forum Windows Forms
    Réponses: 2
    Dernier message: 30/10/2006, 09h49
  5. Pourquoi faut-il utiliser des tables plutôt que des frames ?
    Par malicia_bm dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 09/10/2006, 09h20

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