AOP avec Spring Framework

L'un des composants clés de Spring Framework est le Aspect oriented programming (AOP)cadre. La programmation orientée aspect implique de décomposer la logique du programme en parties distinctes appelées ce que l'on appelle les préoccupations. Les fonctions qui s'étendent sur plusieurs points d'une application sont appeléescross-cutting concernset ces préoccupations transversales sont conceptuellement distinctes de la logique métier de l'application. Il existe divers bons exemples communs d'aspects tels que la journalisation, l'audit, les transactions déclaratives, la sécurité, la mise en cache, etc.

L'unité clé de la modularité dans la POO est la classe, tandis que dans l'AOP l'unité de la modularité est l'aspect. L'injection de dépendances vous aide à dissocier les objets de votre application les uns des autres et AOP vous aide à dissocier les préoccupations transversales des objets qu'elles affectent. AOP est comme les déclencheurs dans les langages de programmation tels que Perl, .NET, Java et autres.

Le module Spring AOP fournit des intercepteurs pour intercepter une application. Par exemple, lorsqu'une méthode est exécutée, vous pouvez ajouter des fonctionnalités supplémentaires avant ou après l'exécution de la méthode.

Terminologies AOP

Avant de commencer à travailler avec AOP, familiarisons-nous avec les concepts et la terminologie AOP. Ces termes ne sont pas spécifiques à Spring, ils sont plutôt liés à AOP.

Sr. Non Termes et description
1

Aspect

Il s'agit d'un module qui dispose d'un ensemble d'API fournissant des exigences transversales. Par exemple, un module de journalisation serait appelé aspect AOP pour la journalisation. Une application peut avoir un certain nombre d'aspects en fonction de l'exigence.

2

Join point

Cela représente un point dans votre application où vous pouvez intégrer l'aspect AOP. Vous pouvez également dire que c'est l'endroit réel dans l'application où une action sera entreprise à l'aide du framework Spring AOP.

3

Advice

Il s'agit de l'action réelle à entreprendre avant ou après l'exécution de la méthode. Il s'agit d'un morceau de code qui est appelé lors de l'exécution du programme par le framework Spring AOP.

4

Pointcut

Il s'agit d'un ensemble d'un ou plusieurs points de jointure où un conseil doit être exécuté. Vous pouvez spécifier des pointcuts à l'aide d'expressions ou de modèles comme nous le verrons dans nos exemples AOP.

5

Introduction

Une introduction vous permet d'ajouter de nouvelles méthodes ou attributs aux classes existantes.

6

Target object

L'objet étant conseillé par un ou plusieurs aspects. Cet objet sera toujours un objet mandaté, également appelé objet conseillé.

sept

Weaving

Le tissage est le processus de liaison d'aspects avec d'autres types d'application ou objets pour créer un objet conseillé. Cela peut être fait au moment de la compilation, du chargement ou de l'exécution.

Types de conseils

Les aspects printaniers peuvent fonctionner avec cinq types de conseils mentionnés comme suit -

Sr. Non Conseils et description
1

before

Exécutez le conseil avant l'exécution d'une méthode.

2

after

Exécutez le conseil après l'exécution de la méthode, quel que soit son résultat.

3

after-returning

Exécutez le conseil après l'exécution d'une méthode uniquement si la méthode se termine avec succès.

4

after-throwing

Exécutez le conseil après l'exécution d'une méthode uniquement si la méthode se termine en lançant une exception.

5

around

Exécutez le conseil avant et après l'appel de la méthode conseillée.

Implémentation d'aspects personnalisés

Spring soutient le @AspectJ annotation style approche et le schema-basedapproche pour implémenter les aspects personnalisés. Ces deux approches ont été expliquées en détail dans les sections suivantes.

Sr. Non Approche et description
1 Basé sur un schéma XML

Les aspects sont implémentés en utilisant les classes régulières avec une configuration basée sur XML.

2 @AspectJ basé

@AspectJ fait référence à un style de déclaration d'aspects en tant que classes Java régulières annotées avec des annotations Java 5.