AOP :Programmation Orienté Aspect
L'AOP est simple! .
Qu'est ce que l'AOP ?
Un aspect est ... une partie d'une application.
Cela reste de toute façon du code java , defini dans des classes.
Ces methodes appelés "advice" s'executent après, avant,..des methodes definis dans les points d'exécution ("joint point"), sans modifier leur code!!
Exemple d'application de l'AOP:
Exemples de modules :
- gestion des utilisateurs (authentification),
- archivage des données (persistance),
- trace ...
Avantage
Permet de rendre une application plus modulaire, en regroupant des fonctionnalités en un même lieu, alors que leurs exécutions est répartie dans l'ensemble des classes, et donc plus facile à maintenir.
Vocabulaire
- Aspect: Une classe annotés avec le tag @Aspect. Les méthodes d'un aspect ("advises") sont exécutées à l'apparition de certains évènements.
- Join point: Un point durant l'execution d'un programme, comme l'éxécution d'une methode, ou la levée d'une exception.
- Advice: Certains auteurs le traduise par "greffon". Méthode éxécutée à un "Joint poin".Il y a plusieurs types de Advice possible: "around," "before" and "after" ....
-
Pointcut:Une expression qui correspond à des "join point" . Un "Advice" est toujours associé à une definition de "pointcut" et s'exécute aà chaque "join point" qui correspond au "pointcut" . Les "pointcut" sont des expressions regulières, ce qui donne une puissance considerable à ca type de programmation.
-
Target object: Object qui sont "advised" (monitoré?) par un ou plusieurs aspect.
-
AOP proxy: Un objet créé par le framework aop dans le but implementer les methodes des "advise" à implementer.
-
Weaving: (tissage) Relie aspects avec le reste de l'application.Il peut être fait à la compilation (En utilisant le compilateur AspectJ par exemple), au chargement ou à l'éxécution.
-
Types de advice:
-
Before : L'"advice" s'éxécute avant un "join point", mais il n'a pas la possibilité d'empécher l'éxécution de la méthode du "joint point", à part bien sûr de lever une exception.
-
After returning: L'"advice" est éxécuté après l'éxecution normale du "join point".
-
After throwing: L'"advice" sera éxécuté si une methode lève une exception.
-
After (finally):L'"advice" est executé quelquesoit la manière par lequel le "joint point" est terminé (Normalement ou suite à une exception).
-
Around : L'"advice" entoure le "join point", comme une méthode.Il peut bien sur accomplir certaine tache et retouner une valeur ou lever une exception.
Quelles sont les dependances necessaires ?
Le comportement est largement dependant des jar accessibles dans le path!
Voila un fichier POM (Project Object Model) destiné à maven2:
Un simple bean qui nous servira de cobail
Un aspect
On remarque :
- L'annotation @Aspect devant class
- L'annotation @AfterReturning avec comme argument une methode de BeanVerySimple.L'argument accepte les expressions regulières
- 2 methodes sans annotations: Elles seront configurées dans le fichier de config Spring
Le fichier de config Spring
Initialisation et Execution:
Références