Avec Objis, spécialiste formation Spring, maîtrisez par la pratique la programmation orientée aspect (POA) avec le tisseur d’aspects Spring AOP. la POA est le deuxième des deux concepts techniques clés du framework Spring ; le premier concept clé étant l’injection de dépendances, mis en oeuvre dans notre tutoriel spring N°2
Objectifs
Comprendre ce qu’est un aspect et le vocabulaire associé
Analyser une implémentation d’un aspect : Log
Se familiariser avec la configuration XML du tisseur Spring AOP
Comprendre l’intégration de Spring avec AspectJ
Créer greffons, points de jonction, coupes, aspects
Programme
Partie 1 : Cours, questions & rappels
Partie 2 : Analyse d’un aspect LOG
Partie 3 : Développement
Partie 1 : Questions & rappels
Questions
Rappelez ce qu’est le phénomène de Dispersion.
Qu’est ce que la Programmation Orientée Aspect ?
En quoi la POA est’elle complémentaire de la POO (Programmation Orienté Objet ) ?
Quel support de la POA propose Spring ? Quelle différence avec le support POA d’AspectJ ?
Qu’est ce qu’un point de jonction ? Une coupe ? Un greffon ? Un Aspect ?
Comment configurer un aspect dans Spring ?
Qu’est ce qu’un tisseur d’aspect ?
Rappel : avantages de la POA
En permettant un couplage faible entre différents objets (limitation de l’écriture en dur dans le code de new() ou de JNDI lookup() ), la programmation Orientée Aspects apporte les avantages suivants :
Maintenance accrue du code
Meilleure réutilisation des composants
Gain de productivité
Amélioration de la qualité du code
Partie 2 : Analyse d’un aspect LOG
Contexte
Spring permet (grace au tisseur d’aspects Spring AOP) de tracer les appels aux méthodes objets pendant l’exécution ET SANS modifier le code de l’application.
Ce besoin peut aussi bien se présenter :
— en phase de développement, le développeur va éviter de mettre dans son code des log.debug(), log.info() et autre System.out.println.
— en phase de maintenance, pour mieux comprendre le cheminement de l’application ou tracer un bug.
Chargement dans eclipse du projet ‘demoaop’
Téléchargez le fichier demoaop.zip qui servira de support à la partie ‘Analyse’ .
Dézippez l’archive. Vous obtenez l’arborescence suivante
Lancez Eclipse
À partir de la vue ‘Explorer’ d’Eclipse, cliquez droit /import/Général/Existing Projects into Workspace.
Naviguez jusqu’à la racine de demoaop. OK.
Cliquez sur Finish. Le projet se charge dans votre eclipse. Ci-dessous arborescence, packages et découverte du bean Service, qui sera l’objet de toute notre attention.
Analyse du service : classe MonService
Analysez la classe de service : com.objis.service.MonService (ci-dessus)
Quels service réalise cette classe ? La classe est t’elle dépendantes de Spring ?
Analyse de l’aspect : classe MonLogger
Analysez la classe implémentant l’aspect : com.objis.aop.MonLogger (2 méthodes afin de logguer AVANT et APRES tout appel d’une méthode du service). La classe dépend t’elle de Spring ?
Quel jar fournit les la classe JoinPoint ? A quoi sert l’interface StaticPart ?
Analyse config conteneur springContext.xml.
Combien de beans sont déclarés ?
Ces beans sont t’ils fortement couplés ?
Explication de la configuration AOP
A quoi sert le bloc<'aop:config>‘ … <'/aop:config> dans le fichier de définition de beans ?
Expliquez la ligne <'aop:pointcut id="servicePointcut" expression="execution(* com.objis.service.*.*(..))"/>
Expliquez la ligne : <'aop:aspect id="loggingAspect" ref="monLogger">
Analysez les librairies necessaires dont : AspectJ ( pris dans libaspectj de SPRING), CGLIB (pris dans libcglib de SPRING). Quel est leurs roles ?
Analysez le code de la classe de test MonServiceTest
Exécutez le test JUnit. Cliquez droit sur le fichier MonserviceTest.java puis Debus As/Junit test
Le test est un succes. Les 3 étapes se sont boien déroulées.
Voici la sortie dans la vue Console d’Eclipse.
Expliquez le résultat de notre test. Mette en évidence l’impact de notre configuration AOP de Spring.
Partie 3 : Développement
A l’aide du cours et de la documentation de référence de Spring ( chapitre 6 : AOP programming) , proposez :
Une nouvelle méthode de la classe MonLogger qui sera apellée en cas de succès de l’appel de la méthode ‘hello’ du service. Paramétrez le fichier springContext.xml en conséquence.
Une nouvelle méthode du service MonService qui sera interceptée.
Mettez en oeuvre un greffon (advice) ‘around’.
Un nouveau service dont les méthodes seront interceptées
Une nouvelle coupe (pointcut)
Un nouvel Aspect
Conclusion
Dans ce tutoriel, vous avez touché du doigt et mis en oeuvre le deuxième concept clé de SPRING : la programmation orientée aspects avec le tisseur Spring AOP.
Le tutoriel Spring N°4 présente l’utilisation d’Eclipse (plugin AJDT) avec un autre tisseur : le tisseur AspectJ.
A partir du tutoriel N°5 (Accès aux données), vous mettez en pratique l’injection de dépendances.
Devenez certifié ‘Développeur Concepteur Java’
Exprimez-vous comme un développeur professionnel. Utilisez les bons mots au bon moment. Concevez et développez avec assurance des applications Java Web Mobile. Rassurez vos futurs employeurs et clients. Devenez Certifié ‘Développeur Concepteur Java’ Objis. + d’informations.