Programare orientată pe aspecte (AOP) complimentează OOP-urile în sensul că oferă și modularitate. Dar unitatea cheie a modularității este aspectul decât clasa.
AOP împarte logica programului în părți distincte (numite preocupări). Este folosit pentru a crește modularitatea prin preocupări transversale .
A preocupare transversală este o preocupare care poate afecta întreaga aplicație și ar trebui să fie centralizată într-o singură locație în cod pe cât posibil, cum ar fi gestionarea tranzacțiilor, autentificarea, înregistrarea în jurnal, securitatea etc.
De ce să folosiți AOP?
Oferă modalitatea conectabilă de a adăuga dinamic preocuparea suplimentară înainte, după sau în jurul logicii reale. Să presupunem că există 10 metode într-o clasă, după cum este prezentat mai jos:
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(){...} }
Există 5 metode care pornesc de la m, 2 metode care pornesc de la n și 3 metode care pornesc de la p.
Înțelegerea scenariului Trebuie să păstrez jurnalul și să trimit notificare după apelarea metodelor care pornesc de la m.
Problemă fără AOP Putem apela metode (care menține jurnalul și trimite notificare) din metodele care încep cu m. Într-un astfel de scenariu, trebuie să scriem codul în toate cele 5 metode.
Dar, dacă clientul spune în viitor, nu trebuie să trimit notificare, trebuie să schimbați toate metodele. Aceasta duce la problema de întreținere.
Soluție cu AOP Nu trebuie să apelăm metode din metodă. Acum putem defini preocuparea suplimentară cum ar fi menținerea jurnalului, trimiterea notificărilor etc. în metoda unei clase. Intrarea sa este dată în fișierul xml.
În viitor, dacă clientul spune să eliminăm funcționalitatea notificatorului, trebuie să schimbăm doar fișierul xml. Deci, întreținerea este ușoară în AOP.
formatează data în java
Unde folosești AOP?
AOP este utilizat mai ales în următoarele cazuri:
- pentru a furniza servicii declarative de întreprindere, cum ar fi gestionarea declarativă a tranzacțiilor.
- Permite utilizatorilor să implementeze aspecte personalizate.
Concepte și terminologie AOP
Conceptele și terminologiile AOP sunt următoarele:
- Punct de alăturare
- Sfat
- Pointcut
- Introducere
- Obiectul țintă
- Aspect
- Interceptor
- Proxy AOP
- Ţesut
Punct de alăturare
Punctul de îmbinare este orice punct din programul dvs., cum ar fi execuția metodei, gestionarea excepțiilor, accesul la câmp etc. Spring acceptă numai punctul de unire pentru execuția metodei.
Sfat
Sfatul reprezintă o acțiune întreprinsă de un aspect la un anumit punct de îmbinare. Există diferite tipuri de sfaturi:
- Înainte de sfat : se execută înaintea unui punct de îmbinare.
- După ce a revenit sfatul : se execută după ce un punct de îmbinare se completează normal.
- După Aruncarea Sfaturi : se execută dacă metoda iese prin aruncarea unei excepții.
- După (în sfârșit) Sfat : se execută după un punct de unire, indiferent de ieșirea punctului de unire, dacă este normal sau excepțional.
- În jurul Sfatului : Se execută înainte și după un punct de îmbinare.
Pointcut
Este un limbaj de expresie al AOP care se potrivește cu punctele de unire.
Introducere
Înseamnă introducerea unei metode și câmpuri suplimentare pentru un tip. Vă permite să introduceți o nouă interfață oricărui obiect recomandat.
Obiectul țintă
Este obiectul, adică a fi sfătuit de unul sau mai multe aspecte. Este, de asemenea, cunoscut ca obiect proxy în primăvară, deoarece Spring AOP este implementat folosind proxy-uri de rulare.
Aspect
Este o clasă care conține sfaturi, puncte de legătură etc.
Interceptor
Este un aspect care conține un singur sfat.
Proxy AOP
Este folosit pentru implementarea contractelor de aspect, create de framework AOP. Va fi un proxy dinamic JDK sau un proxy CGLIB în cadrul primăverii.
Ţesut
Este procesul de conectare a aspectelor cu alte tipuri de aplicații sau obiecte pentru a crea un obiect recomandat. Țeserea se poate face în timpul compilării, în timpul încărcării sau în timpul executării. Spring AOP efectuează țesutul în timpul rulării.
cum să ștergeți coloana în postgresql
Implementări AOP
Implementările AOP sunt furnizate de:
- AspectJ
- Primavara AOP
- JBoss AOP
Primavara AOP
Spring AOP poate fi utilizat în 3 moduri prezentate mai jos. Dar abordarea utilizată pe scară largă este Spring AspectJ Annotation Style. Cele 3 moduri de a utiliza Spring AOP sunt prezentate mai jos:
- Prin Spring1.2 Stil vechi (bazat pe dtd) (acceptat și în Spring3)
- Prin stil de adnotare AspectJ
- Prin stilul de configurare Spring XML (bazat pe schemă)
Legături de referință
Spring Source AOPSpring Source AOP API
Wikipedia