Aspektisuuntautunut ohjelmointi (AOP) täydentää OOP:ia siinä mielessä, että se tarjoaa myös modulaarisuutta. Mutta modulaarisuuden avainyksikkö on aspekti kuin luokka.
AOP hajottaa ohjelman logiikan erillisiin osiin (kutsutaan huolenaiheiksi). Sitä käytetään lisäämään modulaarisuutta monialaisia huolenaiheita .
A monialainen huolenaihe on huolenaihe, joka voi vaikuttaa koko sovellukseen, ja se tulisi keskittää mahdollisimman yhteen paikkaan koodissa, kuten tapahtumien hallinta, todennus, loki, suojaus jne.
Miksi käyttää AOP:ta?
Se tarjoaa kytkettävän tavan lisätä dynaamisesti lisähuolia ennen varsinaista logiikkaa, sen jälkeen tai sen ympärillä. Oletetaan, että luokassa on 10 alla olevaa menetelmää:
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(){...} }
On 5 menetelmää, jotka alkavat m:stä, 2 menetelmää, jotka alkavat n:stä ja 3 menetelmää, jotka alkavat p:stä.
Skenaarion ymmärtäminen Minun on ylläpidettävä lokia ja lähetettävä ilmoitus menetelmien soittamisen jälkeen, jotka alkavat m:stä.
Ongelma ilman AOP:tä Voimme kutsua menetelmiä (joka ylläpitää lokia ja lähettää ilmoituksen) m-alkuisista menetelmistä. Tällaisessa tilanteessa meidän on kirjoitettava koodi kaikilla viidellä menetelmällä.
Mutta jos asiakas sanoo jatkossa, että minun ei tarvitse lähettää ilmoitusta, sinun on muutettava kaikkia tapoja. Se johtaa huoltoongelmiin.
Ratkaisu AOP:lla Meidän ei tarvitse kutsua menetelmiä menetelmästä. Nyt voimme määritellä lisähuolen, kuten lokin ylläpitämisen, ilmoituksen lähettämisen jne. luokan menetelmässä. Sen merkintä on annettu xml-tiedostossa.
Jatkossa, jos asiakas pyytää poistamaan ilmoitustoiminnon, meidän on muutettava vain xml-tiedostoa. Huolto on siis helppoa AOP:ssa.
aakkoset numeroiden mukaan
Missä AOP:tä käytetään?
AOP:ta käytetään useimmiten seuraavissa tapauksissa:
- tarjota deklaratiivisia yrityspalveluita, kuten deklaratiivista tapahtumien hallintaa.
- Sen avulla käyttäjät voivat toteuttaa mukautettuja ominaisuuksia.
AOP:n käsitteet ja terminologia
AOP:n käsitteet ja terminologiat ovat seuraavat:
- Liitoskohta
- Neuvoja
- Pointcut
- Johdanto
- Kohdeobjekti
- Aspekti
- Torjuntahävittäjä
- AOP-välityspalvelin
- Kudonta
Liitoskohta
Liitospiste on mikä tahansa kohta ohjelmassasi, kuten menetelmän suoritus, poikkeusten käsittely, kenttäkäyttö jne. Spring tukee vain menetelmän suorittamisen liitoskohtaa.
Neuvoja
Neuvonta edustaa toimintaa, jonka aspekti suorittaa tietyssä liitospisteessä. Neuvoja on erilaisia:
- Ennen neuvoja : se suoritetaan ennen liitoskohtaa.
- Ohjeiden palauttamisen jälkeen : se suoritetaan sen jälkeen, kun liitospiste on suoritettu normaalisti.
- Heittoneuvoja : se suoritetaan, jos menetelmä poistuu heittämällä poikkeus.
- (vihdoin) neuvojen jälkeen : se suoritetaan liitospisteen jälkeen riippumatta liittymispisteen poistumisesta, onko se normaali tai poikkeuksellinen paluu.
- Noin neuvoja : Se suoritetaan ennen ja jälkeen liitoskohdan.
Pointcut
Se on AOP:n ilmaisukieli, joka vastaa liitospisteitä.
Johdanto
Se tarkoittaa lisämenetelmän ja -kenttien käyttöönottoa tyypille. Sen avulla voit ottaa käyttöön uuden käyttöliittymän mihin tahansa suositeltuun kohteeseen.
Kohdeobjekti
Se on kohde, eli se, jota yksi tai useampi näkökohta neuvoo. Se tunnetaan myös proxy-objektina keväällä, koska Spring AOP on toteutettu ajonaikaisten välityspalvelinten avulla.
Aspekti
Se on luokka, joka sisältää neuvoja, liitoskohtia jne.
Torjuntahävittäjä
Se on näkökohta, joka sisältää vain yhden neuvon.
AOP-välityspalvelin
Sitä käytetään AOP-kehyksen luomien osasopimusten toteuttamiseen. Se on dynaaminen JDK-välityspalvelin tai CGLIB-välityspalvelin kevätkehyksessä.
Kudonta
Se on prosessi, jossa aspekti linkitetään muihin sovellustyyppeihin tai objekteihin neuvotun objektin luomiseksi. Kudonta voidaan tehdä käännös-, lataus- tai suoritusaikana. Spring AOP suorittaa kudontaa ajon aikana.
kuinka löytää näytön koko
AOP-toteutukset
AOP-toteutukset tarjoavat:
- AspectJ
- Kevään AOP
- JBoss AOP
Kevään AOP
Kevään AOP:ta voidaan käyttää kolmella alla mainitulla tavalla. Mutta laajalti käytetty lähestymistapa on Spring AspectJ Annotation Style. Alla on 3 tapaa käyttää jousen AOP:tä:
- Tekijä: Spring1.2 Vanha tyyli (dtd-pohjainen) (tuettu myös Spring3:ssa)
- AspectJ-merkintätyyliin
- Spring XML -määritystyylillä (skeemapohjainen)
Viitelinkit
Kevään lähde AOPSpring Source AOP API
Wikipedia