Аспектно ориентирано програмиране (AOP) допълва OOP в смисъл, че осигурява и модулност. Но ключовата единица на модулността е аспектът, отколкото класът.
AOP разделя логиката на програмата на отделни части (наречени проблеми). Използва се за увеличаване на модулността чрез междусекторни опасения .
А междусекторна загриженост е проблем, който може да засегне цялото приложение и трябва да бъде централизиран на едно място в кода, доколкото е възможно, като управление на транзакции, удостоверяване, регистриране, сигурност и т.н.
Защо да използвате AOP?
Той осигурява възможност за добавяне на динамично добавяне на допълнителна грижа преди, след или около действителната логика. Да предположим, че има 10 метода в клас, както е дадено по-долу:
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 метода, които започват от m, 2 метода, които започват от n, и 3 метода, които започват от p.
Разбиране на сценария Трябва да поддържам дневник и да изпращам известия след извикване на методи, които започват от m.
Проблем без AOP Можем да извикаме методи (които поддържат журнал и изпращат известия) от методите, започващи с m. В такъв сценарий трябва да напишем кода във всичките 5 метода.
Но ако клиентът каже в бъдеще, че не трябва да изпращам известие, трябва да промените всички методи. Това води до проблеми с поддръжката.
Решение с AOP Не е нужно да извикваме методи от метода. Сега можем да дефинираме допълнителна грижа като поддържане на журнал, изпращане на известие и т.н. в метода на клас. Неговият запис е даден в xml файла.
В бъдеще, ако клиентът каже да премахнем функционалността на нотификатора, трябва да променим само в xml файла. Така че поддръжката е лесна в AOP.
10 1 милион
Къде се използва AOP?
AOP се използва най-вече в следните случаи:
- за предоставяне на декларативни корпоративни услуги като декларативно управление на транзакции.
- Позволява на потребителите да прилагат персонализирани аспекти.
AOP концепции и терминология
Концепциите и терминологията на AOP са както следва:
- Точка за присъединяване
- съвет
- Pointcut
- Въведение
- Целеви обект
- Аспект
- Прехващач
- AOP прокси
- Тъкане
Точка за присъединяване
Точка на присъединяване е всяка точка във вашата програма, като например изпълнение на метод, обработка на изключения, достъп до поле и т.н. Spring поддържа само точка на присъединяване за изпълнение на метод.
съвет
Съветът представлява действие, предприето от аспект в определена точка на свързване. Има различни видове съвети:
- Преди съвет : изпълнява се преди точка на присъединяване.
- След връщане Съвет : изпълнява се след нормално завършване на съединителна точка.
- След хвърляне съвет : изпълнява се, ако методът излезе чрез хвърляне на изключение.
- След (накрая) Съвет : изпълнява се след точка на присъединяване, независимо от изхода от точката на присъединяване дали нормално или извънредно връщане.
- Около Съвети : Изпълнява се преди и след точка на присъединяване.
Pointcut
Това е изразен език на AOP, който съвпада с точките на свързване.
Въведение
Това означава въвеждане на допълнителен метод и полета за тип. Позволява ви да въведете нов интерфейс към всеки препоръчан обект.
Целеви обект
Това е обектът, т.е. съветването от един или повече аспекти. Той е известен също като проксиран обект през пролетта, тъй като Spring AOP се внедрява с помощта на проксита по време на изпълнение.
Аспект
Това е клас, който съдържа съвети, точки за присъединяване и др.
Прехващач
Това е аспект, който съдържа само един съвет.
AOP прокси
Използва се за изпълнение на аспектни договори, създадени от AOP рамка. Това ще бъде JDK динамичен прокси или CGLIB прокси в пролетната рамка.
Тъкане
Това е процес на свързване на аспект с други типове приложения или обекти за създаване на препоръчан обект. Тъкането може да се извърши по време на компилиране, време на зареждане или време на изпълнение. Spring AOP изпълнява тъкане по време на изпълнение.
алгоритъм на kruskals
AOP реализации
Реализациите на AOP се предоставят от:
- AspectJ
- Пролетен AOP
- JBoss AOP
Пролетен AOP
Spring AOP може да се използва по 3 начина, дадени по-долу. Но широко използваният подход е Spring AspectJ Annotation Style. 3-те начина за използване на spring AOP са дадени по-долу:
- От Spring1.2 Стар стил (базиран на dtd) (поддържа се и в Spring3)
- По стил на анотация на AspectJ
- By Spring XML конфигурация стил (базиран на схема)
Референтни връзки
Пролетен източник AOPSpring Source AOP API
Уикипедия