Tutoriel spring N°5 : programmation orientée aspect

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.

PNG - 49.2 ko
demoAop

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.

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.

PNG - 214.3 ko
formation-java-distance-objis-3