Tutorial AOP con Spring Framework

0
1668

Uno dei componenti chiave di Spring Framework è l’ Aspect Oriented Programming (AOP) framework.

Aspect Oriented Programming comporta abbattere la logica del programma in parti distinte chiamate cosiddette preoccupazioni. Le funzioni che si estendono su più punti di un’applicazione sono chiamati preoccupazioni trasversali e queste preoccupazioni trasversali sono concettualmente separate dalla logica di business dell’applicazione. Ci sono vari buoni esempi comuni di aspetti quali logging, auditing, le transazioni dichiarative, la sicurezza, e il caching ecc

L’unità fondamentale della modularità in OOP è la classe, mentre in AOP nell’unità di modularità è l’aspetto. Dependency Injection consente di disaccoppiare gli oggetti applicativi gli uni dagli altri e AOP aiuta a disaccoppiare trasversali preoccupazioni da oggetti che essi riguardano.AOP è come un trigger in linguaggi di programmazione come Perl, .NET, Java e altri.

Il modulo Spring AOP fornisce intercettori per intercettare una domanda, ad esempio, quando si esegue un metodo, è possibile aggiungere funzionalità extra prima o dopo l’esecuzione del metodo.

AOP Terminologie:

Prima di iniziare a lavorare con AOP, cerchiamo di acquisire familiarità con i concetti e la terminologia AOP. Questi termini non sono specifici di Spring, piuttosto sono legati alla AOP.

Condizioni Descrizione
Aspect Un modulo che ha un set di API che forniscono requisiti trasversali. Ad esempio, un modulo di registrazione sarebbe chiamato AOP aspetto per la registrazione. Un’applicazione può avere qualsiasi numero di aspetti a seconda delle esigenze.
Join point Questo rappresenta un punto nella vostra applicazione in cui è possibile plug-in AOP aspetto. Si può anche dire, è il luogo effettivo nell’applicazione in cui sarà presa un’azione utilizzando framework Spring AOP.
Advice Questa è l’azione reale da prendere prima o dopo l’esecuzione del metodo. Questo è un pezzo reale del codice che viene richiamato durante l’esecuzione del programma Spring AOP.
Pointcut Questo è un insieme di uno o più joinpoint cui deve essere eseguito. È possibile specificare pointcut usando espressioni o modelli, come vedremo nei nostri esempi AOP.
Introduction Un’introduzione consente di aggiungere nuovi metodi o attributi di classi esistenti.
Target object L’oggetto che viene consigliato da uno o più aspetti, questo oggetto sarà sempre un oggetto proxy. Noto anche come oggetto consigliato.
Weaving Il weaving è il processo di collegamento aspetti con altri tipi di applicazioni o oggetti per creare un oggetto consigliato. Questo può essere fatto in fase di compilazione, il tempo di caricamento, o in fase di esecuzione.

Tipi di Advice

Aspetti possono lavorare con cinque tipi di advice di seguito indicate:

Consigli Descrizione
before Eseguire aspetto prima dell’esecuzione di un metodo.
after Eseguireaspetto dopo l’esecuzione di un metodo indipendentemente dal suo risultato.
after-returning Eseguireaspetto dopo l’esecuzione di un metodo solo se il metodo ha esito positivo.
after-throwing Eseguireaspetto dopo l’esecuzione di un metodo solo se il metodo esce da un’eccezione.
around Eseguireaspetto prima e dopo il metodo consigliato è invocato.

Aspetti personalizzati Implementazione

Spring supporta lo @AspectJ annotation style approccio eschema-based  approccio per implementare aspetti personalizzati. Questi due approcci sono stati spiegati in dettaglio nei seguenti due sub capitoli

Approccio Descrizione
Basato su XML Schema Aspetti sono attuate attraverso lezioni regolari insieme con la configurazione basata su XML.
@AspectJ based AspectJ Si riferisce ad uno stile di dichiarare aspetti come classi Java regolari annotate con Java 5 annotazioni.