Tutoriel spring N°5 : programmation orientée aspect

////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’ .

tutoriel_spring_formation_objis_poa_programmation_aspect_0.png

 Dézippez l’archive. Vous obtenez l’arborescence suivante

tutoriel_spring_formation_objis_poa_programmation_aspect_1.png

 Lancez Eclipse

 À partir de la vue ‘Explorer’ d’Eclipse, cliquez droit /import/Général/Existing Projects into Workspace.

tutoriel_spring_formation_objis_poa_programmation_aspect_2.png

Naviguez jusqu’à la racine de demoaop. OK.

tutoriel_spring_formation_objis_poa_programmation_aspect_3.png

tutoriel_spring_formation_objis_poa_programmation_aspect_4.png

 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.

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 ?

tutoriel_spring_formation_objis_poa_programmation_aspect_7.png

 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">

tutoriel_spring_formation_objis_poa_programmation_aspect_8.png

 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

tutoriel_spring_formation_objis_poa_programmation_aspect_6.png

 Exécutez le test JUnit. Cliquez droit sur le fichier MonserviceTest.java puis Debus As/Junit test

tutoriel_spring_formation_objis_poa_programmation_aspect_9.png

Le test est un succes. Les 3 étapes se sont boien déroulées.

tutoriel_spring_formation_objis_poa_programmation_aspect_10.png

Voici la sortie dans la vue Console d’Eclipse.

tutoriel_spring_formation_objis_poa_programmation_aspect_11.png

 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.

formation-java-distance-objis-3

2018-01-29T10:30:19+01:00

Contactez nous

241 rue DUGUESCLIN, 69003 Lyon

Web : Objis : spécialiste formation Java