Académique Documents
Professionnel Documents
Culture Documents
Dans beaucoup d'applications informatiques, un module ou composant mtier est rgulirement pollu par de multiples appels des composants utilitaires externes. La programmation par aspect (AOP) va permettre d'extraire les dpendances entre modules concernant des aspects techniques entrecroiss et de les grer depuis l'extrieur de ces modules en les spcifiant dans des composants du systme dvelopper nomms aspects ; ils sont dvelopps un autre niveau d'abstraction.
Introduction AOP (Aspect-Oriented Programming) avec le framework Spring par Eric Wawszczyk
I - Introduction..............................................................................................................................................................3 II - La programmation oriente aspect........................................................................................................................ 4 II-A - Principe..........................................................................................................................................................4 II-B - Lexique.......................................................................................................................................................... 4 II-C - Stratgies d'implmentation..........................................................................................................................5 III - AOP : Exemple d'utilisation...................................................................................................................................6 III-A - Prsentation................................................................................................................................................. 6 III-B - La classe tracer........................................................................................................................................ 6 III-C - Le fichier de configuration Spring................................................................................................................7 III-D - La classe MonLogger.................................................................................................................................. 8 III-E - Rsultat........................................................................................................................................................ 8 IV - AOP : Fonctions avances................................................................................................................................... 9 IV-A - Les pointcut................................................................................................................................................. 9 IV-B - Les diffrents Advice................................................................................................................................... 9 V - Conclusion........................................................................................................................................................... 10 V-A - Avantages................................................................................................................................................... 10 V-B - Inconvnients.............................................................................................................................................. 10 VI - Remerciements................................................................................................................................................... 11 VII - Liens...................................................................................................................................................................12
-2Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright Eric Wawszczyk. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ewawszczyk.developpez.com/tutoriel/java/spring/aop/
Introduction AOP (Aspect-Oriented Programming) avec le framework Spring par Eric Wawszczyk
Cet article a pour but de vous prsenter rapidement la programmation par aspect (AOP) et sa mise en application dans une application base sur le framework Spring. Dans la pratique, les considrations techniques que sont censes implmenter les modules d'une application non seulement s'entrecroisent (par exemple la gestion des utilisateurs fait aussi appel la gnration de trace) mais aussi sont rpartis dans la couche mtier. C'est l'intrication ou entrecroisement des aspects techniques. Ainsi, une couche logicielle initialement ddie grer la logique mtier applicative, va se retrouver dpendante de modules grant les aspects transactionnels, journalisation, etc. La programmation par aspect (AOP) va permettre d'extraire les dpendances entre ces modules.
I - Introduction
-3Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright Eric Wawszczyk. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ewawszczyk.developpez.com/tutoriel/java/spring/aop/
Introduction AOP (Aspect-Oriented Programming) avec le framework Spring par Eric Wawszczyk
II-B - Lexique
La programmation oriente aspect, parce qu'elle propose un paradigme de programmation et de nouveaux concepts, a dvelopp un jargon bien spcifique qui ne facilite pas la comprhension de ses concepts qui sont, en dfinitive, simples mais puissants. aspect : un module dfinissant des greffons et leurs points d'activation, greffon (en anglais, advice) : un programme qui sera activ un certain point d'excution du systme, prcis par un point de jonction, point d'action, de coupure, de greffe (en anglais, pointcut) : endroit du logiciel o est insr un greffon par le tisseur d'aspect, point de jonction, d'excution (en anglais, join point) : endroit spcifique dans le flot d'excution du systme, o il est valide d'insrer un greffon. Pour clarifier le propos, il n'est pas possible, par exemple, d'insrer un greffon au milieu du code d'une fonction. Par contre on pourra le faire avant, autour de, la place ou aprs l'appel de la fonction.
Deux grandes stratgies de tissage d'aspects existent : le tissage statique par instrumentation du code source ou du pseudo-code machine intermdiaire le tissage dynamique lors de l'excution du logiciel
C'est ce dernier cas que nous mettrons en pratique dans l'exemple qui va suivre.
-4Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright Eric Wawszczyk. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ewawszczyk.developpez.com/tutoriel/java/spring/aop/
Introduction AOP (Aspect-Oriented Programming) avec le framework Spring par Eric Wawszczyk
-5Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright Eric Wawszczyk. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ewawszczyk.developpez.com/tutoriel/java/spring/aop/
Introduction AOP (Aspect-Oriented Programming) avec le framework Spring par Eric Wawszczyk
Introduction AOP (Aspect-Oriented Programming) avec le framework Spring par Eric Wawszczyk
Explication de la configuration AOP : <aop:config> ... </aop:config> Dfinit le bloc de configuration AOP <aop:pointcut id="servicePointcut" expression="execution(* ew.service.*.*(..))"/> Permet de dfinir des points d'interception sur les objets. Ici l'expression ew.service.*.* signifie que toutes les mthodes des objets qui sont dans le package "ew.service" seront interceptes. <aop:aspect id="loggingAspect" ref="monLogger"> Les appels aux mthodes seront renvoys vers le bean Spring "monLogger" (classe ew.aop.MonLogger) <aop:before method="logMethodEntry" ...> Avant l'appel (before) de la mthode "hello()", la mthode "MonLogger.logMethodEntry()" est appele
-7Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright Eric Wawszczyk. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ewawszczyk.developpez.com/tutoriel/java/spring/aop/
Introduction AOP (Aspect-Oriented Programming) avec le framework Spring par Eric Wawszczyk
<aop:after-returning method="logMethodExit" returning="result"...> Apres l'appel (after) de la mthode "hello()", la mthode "MonLogger.logMethodExit()" est appele et le rsultat de la mthode "hello()" lui sera pass en argument. Cette classe contient les 2 mthodes "logMethodEntry()" et "logMethodExit()" qui vont tre appeles par Spring-AOP pour tracer les appels des mthodes interceptes. MonLogger.java
package ew.aop; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.JoinPoint.StaticPart; public class MonLogger { // Cette mthode est appele chaque fois (et avant) qu'une mthode du package ew.service est intercepte public void logMethodEntry(JoinPoint joinPoint) { Object[] args = joinPoint.getArgs(); // Nom de la mthode intercepte String name = joinPoint.getSignature().toLongString(); StringBuffer sb = new StringBuffer(name + " called with: ["); // Liste des valeurs des arguments reus par la mthode for(int i = 0; i < args.length; i++) { Object o = args[i]; sb.append("'"+o+"'"); sb.append((i == args.length - 1) ? "" : ", "); } sb.append("]"); } System.out.println(sb);
// Cette mthode est appele chaque fois (et aprs) qu'une mthode du package ew.service est intercepte // Elle reoit en argument 'result' qui est le retour de la mthode intercepte public void logMethodExit(StaticPart staticPart, Object result) { // Nom de la mthode intercepte String name = staticPart.getSignature().toLongString(); } } System.out.println(name + " returning: [" + result + "]");
-8Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright Eric Wawszczyk. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ewawszczyk.developpez.com/tutoriel/java/spring/aop/
Introduction AOP (Aspect-Oriented Programming) avec le framework Spring par Eric Wawszczyk
Les diffrents types d'advice sont : Before advice: Excut avant le join point. After returning advice: Excut aprs le join point (Si la mthode intercepte s'excute normalement - sans retourner d'exception). After throwing advice: Excut si la mthode intercepte retourne une exception. After (finally) advice: Excut en sortie du join point (excution normale de la mthode ou sortie en exception). Around advice: Il englobe l'excution de la mthode intercepte. Il s'agit du plus puissant des advices. Il permet de paramtrer le comportement avant et aprs excution de la mthode. Il permet ainsi d'excuter ou non la mthode, de dfinir le retour souhait, voir de lancer une exception.
-9Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright Eric Wawszczyk. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ewawszczyk.developpez.com/tutoriel/java/spring/aop/
Introduction AOP (Aspect-Oriented Programming) avec le framework Spring par Eric Wawszczyk
V - Conclusion
Grce l'AOP, le couplage entre les modules grant des aspects techniques peut tre rduit de faon trs importante, en utilisant ce principe, ce qui prsente de nombreux avantages : Maintenance accrue : les modules techniques, sous forme d'aspect, peuvent tre maintenu plus facilement du fait de son dtachement de son utilisation, Meilleure rutilisation : tout module peut tre rutilis sans se proccuper de son environnement et indpendamment du mtier ou du domaine d'application. Chaque module implmentant une fonctionnalit technique prcise, on n'a pas besoin de se proccuper des volutions futures : de nouvelles fonctionnalits pourront tre implmentes dans de nouveaux modules qui interagiront avec le systme au travers des aspects. Gain de productivit : le programmeur ne se proccupe que de l'aspect de l'application qui le concerne, ce qui simplifie son travail, et permet d'augmenter la paralllisation du dveloppement. Amlioration de la qualit du code : La simplification du code qu'entrane la programmation par aspect permet de le rendre plus lisible et donc de meilleure qualit.
V-A - Avantages
Le tissage d'aspect qui n'est finalement que de la gnration automatique de code insr certains points d'excution du systme dvelopp, produit un code qui peut tre difficile analyser (parce que gnr automatiquement) lors des phases de mise au point des logiciels (dboguage, test). Mais en fait cette difficult est du mme ordre que celle apporte par toute dcomposition non linaire (fonctionnelle ou objet par exemple).
V-B - Inconvnients
- 10 Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright Eric Wawszczyk. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ewawszczyk.developpez.com/tutoriel/java/spring/aop/
Introduction AOP (Aspect-Oriented Programming) avec le framework Spring par Eric Wawszczyk
VI - Remerciements
Merci ma socit Webnet pour m'avoir laiss du temps pour rdiger cet article. Merci RideKick pour sa relecture.
- 11 Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright Eric Wawszczyk. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ewawszczyk.developpez.com/tutoriel/java/spring/aop/
Introduction AOP (Aspect-Oriented Programming) avec le framework Spring par Eric Wawszczyk
VII - Liens
Les sources du tutoriel Dfinition de la programmation oriente aspect Introduction au framework Spring Spring : thorie & pratique - Programmation oriente aspect Aspect Oriented Programming with Spring
- 12 Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright Eric Wawszczyk. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ewawszczyk.developpez.com/tutoriel/java/spring/aop/