Аспектно-орієнтоване програмування (AOP) доповнює ООП у тому сенсі, що він також забезпечує модульність. Але ключовою одиницею модульності є аспект, ніж клас.
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.
Проблема без АОП Ми можемо викликати методи (які ведуть журнал і надсилають сповіщення) з методів, які починаються з m. У такому сценарії нам потрібно написати код усіма 5 методами.
Але, якщо клієнт скаже, що в майбутньому мені не потрібно надсилати сповіщення, вам потрібно змінити всі методи. Це призводить до проблеми обслуговування.
Рішення з АОП Нам не потрібно викликати методи з методу. Тепер ми можемо визначити додаткові завдання, такі як ведення журналу, надсилання сповіщень тощо в методі класу. Його запис наведено у файлі xml.
У майбутньому, якщо клієнт скаже видалити функцію сповіщення, нам потрібно буде змінити лише файл xml. Отже, технічне обслуговування в AOP просте.
mit повна форма
Де використовувати АОП?
АОП в основному використовується в таких випадках:
- надавати декларативні корпоративні послуги, такі як декларативне керування транзакціями.
- Це дозволяє користувачам впроваджувати власні аспекти.
Концепції та термінологія AOP
Концепції та термінологія AOP такі:
- Точка приєднання
- Порада
- Pointcut
- вступ
- Цільовий об'єкт
- Аспект
- Перехоплювач
- Проксі AOP
- Плетіння
Точка приєднання
Точка з’єднання — це будь-яка точка у вашій програмі, наприклад виконання методу, обробка винятків, доступ до поля тощо. Spring підтримує лише точку з’єднання виконання методу.
Порада
Порада представляє дію, виконану аспектом у певній точці з’єднання. Існують різні види порад:
- Перед порадою : він виконується перед точкою приєднання.
- Після повернення Консультація : він виконується після нормального завершення спільної точки.
- Після кидання ради : він виконується, якщо метод завершується через виключення винятку.
- Після (нарешті) Поради : він виконується після точки приєднання незалежно від виходу з точки приєднання, звичайного чи виняткового повернення.
- Навколо Поради : виконується до і після точки приєднання.
Pointcut
Це мова виразів AOP, яка відповідає точкам з’єднання.
вступ
Це означає введення додаткового методу і полів для типу. Це дозволяє вводити новий інтерфейс для будь-якого рекомендованого об’єкта.
Цільовий об'єкт
Це об’єкт, тобто порада з одного або кількох аспектів. Він також відомий як проксі-об’єкт у spring, оскільки Spring AOP реалізовано за допомогою проксі-серверів часу виконання.
Аспект
Це клас, який містить поради, точки з’єднання тощо.
Перехоплювач
Це аспект, який містить лише одну пораду.
Проксі AOP
Він використовується для реалізації аспектних контрактів, створених фреймворком AOP. Це буде динамічний проксі-сервер JDK або проксі-сервер CGLIB у рамках Spring.
Плетіння
Це процес зв’язування аспекту з іншими типами програм або об’єктами для створення рекомендованого об’єкта. Плетіння можна виконувати під час компіляції, завантаження або виконання. Spring AOP виконує плетіння під час виконання.
список як масив
Впровадження AOP
Реалізації AOP забезпечують:
- AspectJ
- Весна АОП
- JBoss AOP
Весна АОП
Spring AOP можна використовувати трьома способами, наведеними нижче. Але широко використовуваним підходом є стиль анотації Spring AspectJ. Нижче наведено 3 способи використання Spring AOP:
- Від Spring1.2 Старий стиль (на основі dtd) (також підтримується у Spring3)
- За стилем анотації AspectJ
- By Spring Стиль конфігурації XML (на основі схеми)
Довідкові посилання
Весна Джерело АОПSpring Source AOP API
Вікіпедія