English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Programmazione Orientata agli Aspetti(AOP) in un certo senso è un complemento dell'OOP perché fornisce anche funzionalità di modularità. Ma l'unità chiave della modularità è l'aspetto piuttosto che la classe.
AOP divide la logica del programma in diverse parti (chiamate punti di interesse). Viene utilizzato per preoccupazioni trasversaliper migliorare la modularità.
preoccupazioni trasversaliÈ un punto di interesse che influisce su tutta l'applicazione e dovrebbe essere concentrato il più possibile in un unico punto di codice, ad esempio gestione delle transazioni, autenticazione, registrazione, sicurezza ecc.
Perché usare AOP?
Fornisce un modo pluggabile per aggiungere dinamicamente punti di interesse aggiuntivi prima, dopo o intorno alla logica reale. Supponiamo che una classe abbia 10 metodi, come segue:
class A{ public void m1(){...} public void m2(){...} public void m3(){...} public void m4(){...} public void m5(){...} public void n1(){...} public void n2(){...} public void p1(){...} public void p2(){...} public void p3(){...} }
Ci sono 5 metodi che iniziano con la lettera m, 2 metodi che iniziano con la lettera n e 3 metodi che iniziano con la lettera p.
Capisco la situazioneDevo mantenere i log e inviare
Problemi senza AOPPossiamo chiamare metodi che iniziano con la lettera m (mantenere i log e inviare notifiche). In questo caso, dobbiamo scrivere il codice utilizzando tutti e cinque i metodi.
Ma se in futuro il cliente dice che non devo inviare notifiche, devo modificare tutti i metodi. Questo può causare problemi di manutenzione.
Soluzione AOPNon dobbiamo chiamare un metodo da un altro metodo. Ora, possiamo definire altri punti di interesse nei metodi della classe, ad esempio mantenere i log, inviare notifiche, ecc. Le voci sono indicate nel file xml.
In futuro, se il cliente dice di voler eliminare la funzione di notifica, dobbiamo solo fare delle modifiche nel file xml. Pertanto, la manutenzione in AOP è facile.
AOP viene utilizzato principalmente nelle seguenti circostanze:
Fornisce servizi aziendali dichiarativi, come la gestione delle transazioni dichiarative. Permette agli utenti di implementare aspetti personalizzati.
Le concetti e i termini AOP sono i seguenti:
Join point Consiglio Pointcut Introduzione Oggetto di destinazione Aspetto Interceptor Proxy AOP Tessitura
Join point è qualsiasi punto nel programma, ad esempio l'esecuzione del metodo, la gestione delle eccezioni, l'accesso ai campi, ecc. Spring supporta solo il Join point dell'esecuzione del metodo.
Il consiglio rappresenta l'operazione che l'aspetto esegue in un Join point specifico. Ci sono diversi tipi di consiglio:
Consiglio prima Advice: Viene eseguito prima del Join point. Consiglio dopo Returning Advice: Viene eseguito dopo che il Join point è completato correttamente. Consiglio dopo Throwing Advice: Viene eseguito se il metodo esce a causa di un'eccezione. Consiglio dopo (finally) Advice: Esegue dopo il Join point, indipendentemente dal fatto che il Join point esca con un normale ritorno o con un'eccezione. Consiglio intorno (Around Advice): Esegue prima e dopo il Join point.
È un linguaggio di espressione AOP, che si abilita con Join point.
Questo significa altri metodi e campi di tipo di introduzione. Permette di introdurre nuove interfacce in qualsiasi oggetto consigliato.
Questo è un oggetto che contiene una o più consigli di aspetti. In Spring, è anche chiamato oggetto proxy, perché Spring AOP è implementato tramite proxy in tempo di esecuzione.
Questo è un'istanza che contiene consigli, punti di intercettazione, ecc.
Questo è un aspetto che contiene solo un consiglio.
Usato per implementare il contratto di aspetti creato dal framework AOP. Nel framework Spring sarà il proxy dinamico JDK o il proxy CGLIB.
Questo è il processo di collegamento di aspetti con altri tipi di applicazione o oggetti per creare oggetti consigliati. La tessitura può essere completata alla compilazione, durante il caricamento o durante l'esecuzione. Spring AOP esegue la tessitura durante l'esecuzione.
L'esecuzione di AOP è fornita da:
AspectJ SpringAOP JBoss AOP
Spring AOP può essere utilizzato in tre modi. Ma il metodo più utilizzato è lo stile di annotazione di Spring AspectJ. Di seguito sono riportati i tre modi di utilizzo di Spring AOP:
Stile vecchio di Spring 1.2 (basato su dtd) (anch'esso supportato in Spring 3) Stile di annotazione tramite AspectJ Configurazione dello stile di XML tramite Spring (basato su schema)