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.
Objis, spécialiste de la formation Java, est heureux de vous offrir ce tutoriel, extrait de séances pratiques de la formation SPRING dispensée par Objis.
Les + objis
70% de travaux pratiques
Clé USB avec tous les outils utilisés + Corrigés TPs
Bilan pédagogique individuel + conseils

+ de 100 tutoriaux java/jee Objis
10 tutoriaux spring framework objis
Objis, spécialiste formation java depuis 2005
Site officiel Spring Source Tool Suite (STS)
JDK 6
Eclipse 3.3.2 europa Entreprise
Spring 2.5.4
Spring IDE 2.1.0
Pour ce Tutoriel, Spring IDE doit être au préalable correctement installé. Le tutoriel ’Installation plugin Spring IDE’ si besoin.
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
Documentation officielle Spring
Javadoc API Spring 2.5
Guide de programmation AspectJ
Documentation et ressources du tisseur AspectJ
10 tutoriaux spring framework objis
Partie 1 : Cours, questions & rappels
Partie 2 : Analyse d’un aspect LOG
Partie 3 : Développement
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
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 lib\aspectj de SPRING), CGLIB (pris dans lib\cglib 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.
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
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.
Le chemin le plus court pour avoir les réflexes et la méthodologie du bon développeur Spring :
Si vous appréciez notre sens du partage, devenez gratuitement membre ’classic’ du Club Objis :
Votez pour les prochains tutoriaux à publier
Préparez vos entretiens techniques
Valorisez votre profil / expertise
Identifiez des opportunités d’emploi
Recevez la newsletter objis.com