Aspektově orientované programování (AOP) doplňuje OOP v tom smyslu, že také poskytuje modularitu. Ale klíčovou jednotkou modularity je aspekt než třída.
AOP rozděluje logiku programu na samostatné části (nazývané obavy). Používá se ke zvýšení modularity o průřezové obavy .
A průřezový zájem je problém, který může ovlivnit celou aplikaci a měl by být centralizován na jednom místě v kódu, jak je to možné, jako je správa transakcí, ověřování, protokolování, zabezpečení atd.
Proč používat AOP?
Poskytuje zásuvný způsob, jak dynamicky přidat další obavy před, za nebo kolem skutečné logiky. Předpokládejme, že ve třídě je 10 metod, jak je uvedeno níže:
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(){...} }
Existuje 5 metod, které začínají od m, 2 metody začínající od n a 3 metody začínající od p.
Pochopení scénáře Musím udržovat protokol a odesílat upozornění po volání metod, které začínají od m.
Problém bez AOP Můžeme volat metody (které udržují log a zasílají upozornění) z metod začínajících na m. V takovém scénáři musíme napsat kód ve všech 5 metodách.
Ale pokud klient v budoucnu řekne, nemusím posílat upozornění, musíte změnit všechny metody. To vede k problémům s údržbou.
Řešení s AOP Nemusíme volat metody z metody. Nyní můžeme definovat další starosti, jako je udržování protokolu, odesílání upozornění atd. v metodě třídy. Jeho záznam je uveden v souboru xml.
Pokud klient v budoucnu řekne, že má odstranit funkci oznamovatele, musíme provést změnu pouze v souboru xml. Údržba je tedy v AOP snadná.
tučné písmo v css
Kde používat AOP?
AOP se nejčastěji používá v následujících případech:
- poskytovat deklarativní podnikové služby, jako je deklarativní řízení transakcí.
- Umožňuje uživatelům implementovat vlastní aspekty.
Koncepce a terminologie AOP
Koncepty a terminologie AOP jsou následující:
- Připojte se k bodu
- Rada
- Bodový řez
- Úvod
- Cílový objekt
- Aspekt
- Interceptor
- AOP proxy
- Tkaní
Připojte se k bodu
Bod spojení je jakýkoli bod ve vašem programu, jako je provádění metody, zpracování výjimek, přístup k polím atd. Spring podporuje pouze spojovací bod provádění metody.
Rada
Rada představuje akci provedenou aspektem v konkrétním spojovacím bodě. Existují různé typy rad:
- Před radou : provede se před bodem spojení.
- Po návratu Rady : spustí se po normálním dokončení společného bodu.
- Po házení Rady : provede se, pokud metoda skončí vyvoláním výjimky.
- Po (konečně) radě : spustí se po bodu spojení bez ohledu na výstup z bodu spojení, zda normální nebo výjimečný návrat.
- Kolem Rady : Provádí se před a za bodem spojení.
Bodový řez
Je to výrazový jazyk AOP, který odpovídá spojovacím bodům.
Úvod
Znamená to zavedení další metody a polí pro typ. To vám umožní zavést nové rozhraní pro jakýkoli doporučovaný objekt.
Cílový objekt
Je to objekt, tj. být doporučován jedním nebo více aspekty. Je také známý jako objekt proxy na jaře, protože Spring AOP je implementován pomocí runtime proxy.
Aspekt
Je to třída, která obsahuje rady, spojovací body atd.
Interceptor
Je to aspekt, který obsahuje pouze jednu radu.
AOP proxy
Používá se k implementaci smluv aspektů, vytvořených rámcem AOP. Bude to dynamický proxy JDK nebo proxy CGLIB na jaře.
Tkaní
Je to proces propojení aspektu s jinými typy aplikací nebo objekty za účelem vytvoření doporučeného objektu. Tkaní lze provádět v době kompilace, načítání nebo za běhu. Spring AOP provádí tkaní za běhu.
čtení souboru csv v jazyce Java
Implementace AOP
Implementace AOP zajišťují:
- AspectJ
- Jarní AOP
- JBoss AOP
Jarní AOP
Pružinový AOP lze použít 3 níže uvedenými způsoby. Ale široce používaný přístup je Spring AspectJ Annotation Style. Níže jsou uvedeny 3 způsoby použití pružinového AOP:
- Od Spring1.2 Starý styl (založený na dtd) (podporováno také v Spring3)
- Podle stylu anotace AspectJ
- Podle Spring ve stylu konfigurace XML (založené na schématu)
Referenční odkazy
Pružinový zdroj AOPSpring Source AOP API
Wikipedie