Skip to content

Latest commit

 

History

History
48 lines (37 loc) · 3.46 KB

File metadata and controls

48 lines (37 loc) · 3.46 KB

Aspect Oriented Programming


AOP - підхід до архітектури ПЗ, метою якого є збільшити модульність системи шляхом виділення cross-cutting concerns - елементів спільних для різних шарів абстракції. Використовується наприклад для відокремлення бізнес логіки від службової логіки. Реалізується за допомогою AspectJ та Spring AOP.

Joint points - точки приєднання - події, що виникають протягом виконання програми (виклик методу, створення об'єктів ітд).


Pointcut

Pointcut - шаблон за яким вибираються joint points. По суті шукає методи, де можна застосувати Advice . Поінткат можна перевикористовувати задавши його як метод, а також комбінувати використовуючи логічні операції.

execution( modifiers-pattern? return-type-pattern declaring-type-pattern? method-name-pattern(parameters -pattern) throws-pattern )

  • ? - не обов'язкове поле
  • "*" - будь-яка одна змінна
  • .. - нуль або більше будь яких параметрів

приклади:

execution(public void *(*) - будь-який public метод з return type void , з будь яким іменем методу, з одним довільним параметром.

execution(public * get*(..) - убдь-який public метод з будь яким return type, з іменем, що починається з get, з будь-якою кількістю довільних параметрів (нуль і більше).


Advice

Advice - код який вставляється у вибрані нами місця. В joint points через pointcuts.

Типи Advice

  • Before
  • AfterReturning - Виконується лише після нормального виконання цільового методу, може перехоплювати (і змінювати) результат методу.
  • After throwing - Виконується після ексепшна, може перехоплювати об'єкт ексепшна.
  • After / After finally - Виконується після методу в будь якому випадку, не залежно від результату. Не дає можливість перехоплювати ні результат ні ексепшн.
  • Around - Виконується і до і після методу. Можна міняти сам метод і його результати. Замість JoinPoint працює з ProceedingJoinPoint.

Advice i pointcut складають собою аспект.


Join(t) point

Точка (момент) в програмі, коли застосовується advice. Якщо в параметри едвайсу вписати джоінт поінт, то можна отримати інформацію про сигнатуру методу.


Weaving (переплетення) - процес вставки advice в тіло програми.

  • compile time weaving
  • post-compile weaving
  • load-time weaving