Programació Orientada a Aspectes (AOP) complementa els OOP en el sentit que també proporciona modularitat. Però la unitat clau de la modularitat és l'aspecte que la classe.
AOP trenca la lògica del programa en parts diferents (anomenades preocupacions). S'utilitza per augmentar la modularitat preocupacions transversals .
A preocupació transversal és una preocupació que pot afectar a tota l'aplicació i s'hauria de centralitzar en una ubicació del codi tant com sigui possible, com ara la gestió de transaccions, l'autenticació, el registre, la seguretat, etc.
Per què utilitzar AOP?
Proporciona la manera connectable d'afegir dinàmicament la preocupació addicional abans, després o al voltant de la lògica real. Suposem que hi ha 10 mètodes en una classe tal com es mostra a continuació:
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(){...} }
Hi ha 5 mètodes que comencen a partir de m, 2 mètodes que comencen a partir de n i 3 mètodes que comencen a partir de p.
Comprensió de l'escenari He de mantenir el registre i enviar una notificació després de trucar a mètodes que comencen des de m.
Problema sense AOP Podem cridar mètodes (que manté el registre i envia notificacions) des dels mètodes que comencen per m. En aquest escenari, hem d'escriure el codi en els 5 mètodes.
Però, si el client diu en el futur, no he d'enviar notificacions, heu de canviar tots els mètodes. Condueix al problema de manteniment.
Solució amb AOP No hem de cridar mètodes des del mètode. Ara podem definir la preocupació addicional com mantenir el registre, enviar notificacions, etc. en el mètode d'una classe. La seva entrada es dóna al fitxer xml.
En el futur, si el client diu que elimineu la funcionalitat del notificador, només haurem de canviar el fitxer xml. Per tant, el manteniment és fàcil en AOP.
algorisme de kruskal
On utilitzar AOP?
AOP s'utilitza principalment en els casos següents:
- per oferir serveis empresarials declaratius, com ara la gestió declarativa de transaccions.
- Permet als usuaris implementar aspectes personalitzats.
Conceptes i terminologia de l'AOP
Els conceptes i terminologies de l'AOP són els següents:
- Punt d'unió
- Consell
- Pointcut
- Introducció
- Objecte objectiu
- Aspecte
- Interceptor
- Proxy AOP
- Teixir
Punt d'unió
El punt d'unió és qualsevol punt del vostre programa, com ara l'execució del mètode, el maneig d'excepcions, l'accés al camp, etc. Spring només admet el punt d'unió d'execució del mètode.
Consell
L'assessorament representa una acció realitzada per un aspecte en un punt d'unió determinat. Hi ha diferents tipus de consells:
- Abans del Consell : s'executa abans d'un punt d'unió.
- Després de tornar el consell : s'executa després que un punt d'articulació es completi amb normalitat.
- Després de llançar consells : s'executa si el mètode surt llançant una excepció.
- Després (per fi) Consell : s'executa després d'un punt d'unió independentment de la sortida del punt d'unió si és normal o un retorn excepcional.
- Al voltant de Consells : S'executa abans i després d'un punt d'unió.
Pointcut
És un llenguatge d'expressió d'AOP que coincideix amb els punts d'unió.
Introducció
Significa la introducció de mètodes i camps addicionals per a un tipus. Us permet introduir una nova interfície a qualsevol objecte aconsellat.
Objecte objectiu
És l'objecte, és a dir, ser assessorat per un o més aspectes. També es coneix com a objecte intermediari a la primavera perquè Spring AOP s'implementa mitjançant servidors intermediaris en temps d'execució.
Aspecte
És una classe que conté consells, punts de connexió, etc.
Interceptor
És un aspecte que només conté un consell.
Proxy AOP
S'utilitza per implementar contractes d'aspecte, creats pel framework AOP. Serà un servidor intermediari dinàmic JDK o un servidor intermediari CGLIB al marc de primavera.
Teixir
És el procés d'enllaçar aspectes amb altres tipus d'aplicació o objectes per crear un objecte aconsellat. El teixit es pot fer en temps de compilació, temps de càrrega o temps d'execució. Spring AOP realitza el teixit en temps d'execució.
què és l'altaveu
Implementacions AOP
Les implementacions d'AOP són proporcionades per:
- Aspecte J
- Primavera AOP
- JBoss AOP
Primavera AOP
Spring AOP es pot utilitzar de 3 maneres que s'indiquen a continuació. Però l'enfocament àmpliament utilitzat és Spring AspectJ Annotation Style. Les 3 maneres d'utilitzar Spring AOP es donen a continuació:
- Per Spring1.2 Estil antic (basat en dtd) (també compatible amb Spring3)
- Per estil d'anotació AspectJ
- Per l'estil de configuració Spring XML (basat en un esquema)
Enllaços de referència
Spring Source AOPSpring Source AOP API
Viquipèdia