Szempont-orientált programozás (AOP) kiegészíti az OOP-okat abban az értelemben, hogy modularitást is biztosít. De a modularitás kulcsegysége a szempont, mint az osztály.
Az AOP a program logikáját különálló részekre bontja (úgynevezett aggályok). A modularitás növelésére szolgál átfogó aggodalmak .
A átfogó aggály olyan aggodalomra ad okot, amely az egész alkalmazást érintheti, és a kódban lehetőleg egy helyen kell központosítani, mint például a tranzakciókezelés, hitelesítés, naplózás, biztonság stb.
Miért érdemes AOP-t használni?
Ez biztosítja a csatlakoztatható módot a további aggályok dinamikus hozzáadásához a tényleges logika előtt, után vagy körül. Tegyük fel, hogy egy osztályban 10 metódus van, az alábbiak szerint:
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(){...} }
5 metódus van, amely m-től, 2 n-től és 3 p-től induló metódus létezik.
A forgatókönyv megértése Naplót kell vezetnem és értesítést kell küldenem az m-től kezdődő metódusok hívása után.
Probléma AOP nélkül A metódusokat (amelyek naplót vezetnek és értesítést küldenek) hívhatunk meg az m betűvel kezdődő metódusokból. Ebben a forgatókönyvben mind az 5 módszerben meg kell írnunk a kódot.
De ha a kliens azt mondja a jövőben, hogy nem kell értesítést küldenem, akkor az összes módszert módosítani kell. Ez karbantartási problémához vezet.
Megoldás AOP-val Nem kell metódusokat hívnunk a metódusból. Most egy osztály metódusában definiálhatjuk a további szempontokat, mint a napló vezetése, értesítés küldése stb. Bejegyzése az xml fájlban található.
A jövőben, ha az ügyfél azt mondja, hogy távolítsa el az értesítő funkciót, csak az xml fájlban kell módosítanunk. Így a karbantartás egyszerű az AOP-ban.
dinamikus programozás
Hol használja az AOP-t?
Az AOP-t leggyakrabban a következő esetekben használják:
- deklaratív vállalati szolgáltatások nyújtására, például deklaratív tranzakciókezelésre.
- Lehetővé teszi a felhasználók számára egyéni szempontok megvalósítását.
AOP fogalmak és terminológia
Az AOP fogalmai és terminológiái a következők:
- Csatlakozási pont
- Tanács
- Pointcut
- Bevezetés
- Célobjektum
- Vonatkozás
- Elfogó
- AOP proxy
- Szövés
Csatlakozási pont
A csatlakozási pont a program bármely pontja, például metódusvégrehajtás, kivételkezelés, mezőhozzáférés stb. A Spring csak a metódusvégrehajtás csatlakozási pontot támogatja.
Tanács
A tanács egy aspektus által egy adott csatlakozási ponton végrehajtott műveletet jelöl. Különféle tanácsok léteznek:
- Tanács előtt : a csatlakozási pont előtt hajtódik végre.
- Tanácsok visszaküldése után : azután hajtódik végre, hogy egy csatlakozási pont normálisan befejeződött.
- A dobás utáni tanácsok : akkor fut le, ha a metódus kivételt dobva kilép.
- Tanács (végre) után : a csatlakozási pont után végrehajtódik, függetlenül a csatlakozási pont kilépésétől, akár normál, akár kivételes visszatérésről van szó.
- Tanácsok körül : A csatlakozási pont előtt és után fut.
Pointcut
Ez az AOP kifejezési nyelve, amely megfelel a csatlakozási pontoknak.
Bevezetés
Ez további metódusok és mezők bevezetését jelenti egy típushoz. Lehetővé teszi új interfész bevezetését bármely javasolt objektumhoz.
Célobjektum
Ez a tárgy, azaz egy vagy több szempont által tanácsolt. Tavasszal proxyobjektumként is ismert, mivel a Spring AOP futásidejű proxykkal valósul meg.
Vonatkozás
Ez egy olyan osztály, amely tanácsokat, csatlakozási pontokat stb.
Elfogó
Ez egy olyan szempont, amely csak egy tanácsot tartalmaz.
AOP proxy
Az AOP keretrendszer által létrehozott szempontszerződések megvalósítására szolgál. Ez egy JDK dinamikus proxy vagy CGLIB proxy lesz a tavaszi keretrendszerben.
Szövés
Ez a szempont más alkalmazástípusokkal vagy objektumokkal való összekapcsolásának folyamata egy javasolt objektum létrehozása érdekében. A szövés történhet fordítási, betöltési vagy futási időben. A tavaszi AOP futási időben szövést hajt végre.
java összehasonlítja a karakterláncokat
AOP megvalósítások
Az AOP megvalósításokat a következők biztosítják:
- AspectJ
- Tavaszi AOP
- JBoss AOP
Tavaszi AOP
A tavaszi AOP 3 alábbi módon használható fel. De a széles körben használt megközelítés a Spring AspectJ Annotation Style. A rugós AOP használatának 3 módja az alábbiakban található:
- Szerző: Spring1.2 Régi stílus (dtd alapú) (a Spring3 is támogatja)
- AspectJ annotációs stílus szerint
- Spring XML konfigurációs stílus szerint (séma alapú)
Referencia linkek
Tavaszi forrás AOPSpring Source AOP API
Wikipédia