SlideShare une entreprise Scribd logo
1  sur  34
Spring AOP
Spring AOP
Аспектно-ориентированное
программирование,
сокращенно АОП (Aspect
Oriented Programming или
AOP)
Spring AOP
AOP - являются одним из
основных принципов, на
которых построен главный
продукт компании SpringSource
– Spring Framework.
Spring AOP
Spring AOP
В основе аспектно-ориентированного
программирования лежит понятие
crosscutting concerns, которое не имеет
пока устоявшегося эквивалента в
русском языке. Наиболее близким по
смыслу считается и чаще всего
используется словосочетание
«сквозная функциональность»
Spring AOP
Под сквозной функциональностью
понимается функциональность,
реализовать которую в отдельном
компоненте языка программирования
традиционными средствами
процедурного или объектно-
ориентированного программирования
или очень сложно, или вообще
невозможно.
Spring AOP
Кроме того, эта функциональность не
относятся напрямую к предметной
области.
Примером такой функциональности
может являться например
протоколирование работы системы
(logging).
Spring AOP
Использование аспектно-
ориентированного программирования
помогает следовать принципу
разделения ответственности (separation
of concerns), что положительно
сказывается на многих характеристиках
разрабатываемой информационной
системы.
Spring AOP
Основные понятия АОП
Точка соединения (joinpoint) — точка
в программе, где существует
возможность выполнить
дополнительный код средствами АОП.
Различные реализации АОП имеют
различные возможные точки
соединения, таковыми могут являться
момент вызова методов класса или
обращений к полям объекта.
Основные понятия АОП
Совет (advice) —класс,
реализующий сквозную
функциональность. Существуют
различные типа советов:
 выполняемые до точки
соединения,
 после
 вместо неё.
Основные понятия АОП
Срез (pointcut) — точка
соединения (joinpoint), которая
выбрана для исполнения в ней
сквозной функциональности,
определенная советом (advice).
Основные понятия АОП
Аспект (aspect) — под аспектом
понимают комбинацию, состоящую из
среза (pointcut) и реализующего
сквозную функциональность совета
(advice). Аспект изменяет поведение
остального кода, исполняя совет в
точках соединения, определённых
некоторым срезом. В Spring для этого
используется также понятие advisor.
Основные понятия АОП
Внедрение или введение
(introduction) — под этим термином
понимают процесс модификации
объекта путем добавления
дополнительных полей и /или методов.
Внедрение также может быть
использовано для реализации
объектом интерфейса без явного
указания этого в классе объекта.
Основные понятия АОП
Связывание (weaving) – связывание
аспектов с объектами для создания
новых, «расширенных» объектов.
Основные понятия АОП
Цель или целевой объект (target) –
объект, являющийся результатом
связывания (weaving), то есть
реализующий первоначальную бизнес
логику плюс сквозная
функциональность, выполненная
одним или несколькими аспектами.
Spring AOP
Существует два различных способа
реализации аспектно-ориентированного
программирования: статический и
динамический.
Эти способы различаются моментами
времени, когда происходит связывание
(weaving) и способом, как это
связывание происходит.
Spring AOP
Существует два различных способа
реализации аспектно-ориентированного
программирования: статический и
динамический.
Эти способы различаются моментами
времени, когда происходит связывание
(weaving) и способом, как это
связывание происходит.
Статическое АОП
При статической реализации аспектно-
ориентированного программирования
связывание является отдельным шагом
в процессе построения программного
продукта (build process) путем
модификации байт-кода (bytecode)
классов, изменяя и дополняя его
необходимым образом.
Динамическое АОП
В динамическом АОП процесс
связывания (weaving) происходит
динамически в момент исполнения. В
Spring Framework используется именно
такой способ связывания и это
реализовано с помощью использования
специальных объектов-посредников
(proxy) для объектов, к которым должны
быть применены советы (advice).
Динамическое АОП
public class Caller {
private Callee callee;
public void someMethod() {
callee.operationA();
}
}
Динамическое АОП
Динамическое АОП
Средствами Spring AOP
поддерживается только один вид точек
соединения (jointpoint) - вызовы
методов классов. Это является
существенным упрощением по
сравнению с такой тяжеловесной
реализацией АОП как AspectJ.
Динамическое АОП
Средствами Spring AOP
поддерживается только один вид точек
соединения (jointpoint) - вызовы
методов классов. Это является
существенным упрощением по
сравнению с такой тяжеловесной
реализацией АОП как AspectJ.
execution
execution - определяет точки
соединения на основании имени
метода. Наиболее часто используемое
выражение для определения jointpoint.
При использовании выражения
execution возможно указывать пакет,
имя класса, название метода,
видимость метода, тип возвращаемого
объекта и тип аргументов.
within
within - определяет возможные точки
соединения только у объектов
заданного типа или у классов,
определенных в заданном пакете и его
подпакетах.
this
this - определяет точки соединения для
всех объектов, у которых объект
посредника (AOP proxy) реализует
указанный в аннотации тип..
this
target - определяет точки соединения
для всех объектов, у которых целевой
объект (target) реализует указанный в
аннотации тип.
args
args - определяет точки соединения
сравнением аргументов вызываемого
метода с типами аргументов, указанных
в аннотации.
args
bean - определяет точки соединения
для управляемых компонентов (beans),
имеющих определенный в аннотации
идентификатор или имя (атрибуты id
или name компонента). При указании
имени бина возможно использовать
групповой символ (wildcard)
args
@annotation - задает точки соединения
для методов, которые были
«помечены» указанной аннотацией
@Before
Метод аспекта, помеченный @Before ,
будет вызван перед выполнением
метода целевого класса. В отличие от
аннотации @Around, избежать вызова
метода целевого класса возможно
только генерацией исключительной
ситуации (exception) внутри аспекта.
Ограничения
Аспект нельзя применить к static
методам и final классам. Это
обусловлено тем, что proxy-объекты
создаются путём наследования от
исходных классов (поэтому нельзя
создать proxy к final классу; по этой же
причине нельзя применить аспект к
static методу: static методы не
наследуются)
Ограничения
Spring AOP не умеет применять
аспекты к конструкторам и
свойствам класса.
Методы служащие точками
соединения (join point) должны
быть public.

Contenu connexe

Tendances

Введение в Spring
Введение в SpringВведение в Spring
Введение в SpringUnguryan Vitaliy
 
Java. Работа с файловой системой. Потоки ввода-вывода.
Java. Работа с файловой системой. Потоки ввода-вывода.Java. Работа с файловой системой. Потоки ввода-вывода.
Java. Работа с файловой системой. Потоки ввода-вывода.Unguryan Vitaliy
 
Шаблоны разработки ПО. Часть 1. Введние
Шаблоны разработки ПО. Часть 1. ВведниеШаблоны разработки ПО. Часть 1. Введние
Шаблоны разработки ПО. Часть 1. ВведниеSergey Nemchinsky
 
Введение в сетевые технологии
Введение в сетевые технологииВведение в сетевые технологии
Введение в сетевые технологииUnguryan Vitaliy
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Javametaform
 
Java. Generic - шаблонные типы.
Java.  Generic - шаблонные типы.Java.  Generic - шаблонные типы.
Java. Generic - шаблонные типы.Unguryan Vitaliy
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Javametaform
 
Лекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследованиеЛекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследованиеmetaform
 
Работа с БД в Java
Работа с БД в JavaРабота с БД в Java
Работа с БД в Javametaform
 
работа с потоками ввода вывода
работа с потоками ввода выводаработа с потоками ввода вывода
работа с потоками ввода выводаmetaform
 
Java. Введение в коллекции. Классы обертки. Перечисленияю
Java. Введение в коллекции. Классы обертки.  ПеречисленияюJava. Введение в коллекции. Классы обертки.  Перечисленияю
Java. Введение в коллекции. Классы обертки. ПеречисленияюUnguryan Vitaliy
 
C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.Igor Shkulipa
 
C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.Igor Shkulipa
 
C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.Igor Shkulipa
 
Java. Полиморфизм.
Java. Полиморфизм.Java. Полиморфизм.
Java. Полиморфизм.Unguryan Vitaliy
 

Tendances (20)

Введение в Spring
Введение в SpringВведение в Spring
Введение в Spring
 
java 8
java 8java 8
java 8
 
Java. Работа с файловой системой. Потоки ввода-вывода.
Java. Работа с файловой системой. Потоки ввода-вывода.Java. Работа с файловой системой. Потоки ввода-вывода.
Java. Работа с файловой системой. Потоки ввода-вывода.
 
Шаблоны разработки ПО. Часть 1. Введние
Шаблоны разработки ПО. Часть 1. ВведниеШаблоны разработки ПО. Часть 1. Введние
Шаблоны разработки ПО. Часть 1. Введние
 
Введение в сетевые технологии
Введение в сетевые технологииВведение в сетевые технологии
Введение в сетевые технологии
 
Java. Методы
Java. Методы Java. Методы
Java. Методы
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Java
 
Stream API
Stream APIStream API
Stream API
 
Java. Generic - шаблонные типы.
Java.  Generic - шаблонные типы.Java.  Generic - шаблонные типы.
Java. Generic - шаблонные типы.
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Java
 
Лекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследованиеЛекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследование
 
Работа с БД в Java
Работа с БД в JavaРабота с БД в Java
Работа с БД в Java
 
работа с потоками ввода вывода
работа с потоками ввода выводаработа с потоками ввода вывода
работа с потоками ввода вывода
 
Java. Введение в коллекции. Классы обертки. Перечисленияю
Java. Введение в коллекции. Классы обертки.  ПеречисленияюJava. Введение в коллекции. Классы обертки.  Перечисленияю
Java. Введение в коллекции. Классы обертки. Перечисленияю
 
C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.
 
Java: вчера, сегодня, завтра
Java: вчера, сегодня, завтраJava: вчера, сегодня, завтра
Java: вчера, сегодня, завтра
 
C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.
 
C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.
 
Java. Полиморфизм.
Java. Полиморфизм.Java. Полиморфизм.
Java. Полиморфизм.
 
Step 1
Step 1Step 1
Step 1
 

En vedette (7)

Рефлексия в java
Рефлексия в javaРефлексия в java
Рефлексия в java
 
JDBC
JDBCJDBC
JDBC
 
XML
XMLXML
XML
 
Аннотации в java
Аннотации в javaАннотации в java
Аннотации в java
 
JSTL
JSTLJSTL
JSTL
 
Date & Time in Java SE 8
Date & Time in Java SE 8Date & Time in Java SE 8
Date & Time in Java SE 8
 
JSP
JSPJSP
JSP
 

Similaire à Spring AOP

Inroducing SAP ABAP - Presentation with basics SAP ABAP
Inroducing SAP ABAP - Presentation with basics SAP ABAPInroducing SAP ABAP - Presentation with basics SAP ABAP
Inroducing SAP ABAP - Presentation with basics SAP ABAPmikhailshurgulaya
 
Практический анализ по RUP
Практический анализ по RUPПрактический анализ по RUP
Практический анализ по RUPSQALab
 
Тестирование параллельных программ
Тестирование параллельных программТестирование параллельных программ
Тестирование параллельных программTatyanazaxarova
 
моделирование бизнес процессов с B pwin 4.0
моделирование бизнес процессов с B pwin 4.0моделирование бизнес процессов с B pwin 4.0
моделирование бизнес процессов с B pwin 4.0vaha1411
 
08-170327133157.pdf
08-170327133157.pdf08-170327133157.pdf
08-170327133157.pdfssuser0562f1
 
Основы алгоритмического и объектно ориентированного программирования.
Основы алгоритмического и объектно ориентированного программирования.Основы алгоритмического и объектно ориентированного программирования.
Основы алгоритмического и объектно ориентированного программирования.Елена Никонова
 
Отладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программОтладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программTatyanazaxarova
 
семинар Bpmn
семинар Bpmnсеминар Bpmn
семинар BpmnNastya_K
 
"Опыт создания системы управления сборкой и тестированием" (полная)
"Опыт создания системы управления сборкой и тестированием" (полная)"Опыт создания системы управления сборкой и тестированием" (полная)
"Опыт создания системы управления сборкой и тестированием" (полная)SPB SQA Group
 
QA Fest 2018. Анастасия Асеева. Shift-Left Testing
QA Fest 2018. Анастасия Асеева. Shift-Left TestingQA Fest 2018. Анастасия Асеева. Shift-Left Testing
QA Fest 2018. Анастасия Асеева. Shift-Left TestingQAFest
 
Predzazhita 2009 v16
Predzazhita 2009 v16Predzazhita 2009 v16
Predzazhita 2009 v16guest1ba51d
 
оп.05 основы программирования
оп.05 основы программированияоп.05 основы программирования
оп.05 основы программированияStepan1234
 
Андрей Кирпичев "Гибкая модульность инструментами АОП"
Андрей Кирпичев  "Гибкая модульность инструментами АОП"Андрей Кирпичев  "Гибкая модульность инструментами АОП"
Андрей Кирпичев "Гибкая модульность инструментами АОП"MskDotNet Community
 

Similaire à Spring AOP (20)

Spring in java
Spring in javaSpring in java
Spring in java
 
Inroducing SAP ABAP - Presentation with basics SAP ABAP
Inroducing SAP ABAP - Presentation with basics SAP ABAPInroducing SAP ABAP - Presentation with basics SAP ABAP
Inroducing SAP ABAP - Presentation with basics SAP ABAP
 
Symfony 3
Symfony 3Symfony 3
Symfony 3
 
Практический анализ по RUP
Практический анализ по RUPПрактический анализ по RUP
Практический анализ по RUP
 
Авиком
АвикомАвиком
Авиком
 
Тестирование параллельных программ
Тестирование параллельных программТестирование параллельных программ
Тестирование параллельных программ
 
алгоритмы и их виды
алгоритмы и их видыалгоритмы и их виды
алгоритмы и их виды
 
моделирование бизнес процессов с B pwin 4.0
моделирование бизнес процессов с B pwin 4.0моделирование бизнес процессов с B pwin 4.0
моделирование бизнес процессов с B pwin 4.0
 
алгоритмы и их виды
алгоритмы и их видыалгоритмы и их виды
алгоритмы и их виды
 
08-170327133157.pdf
08-170327133157.pdf08-170327133157.pdf
08-170327133157.pdf
 
Основы алгоритмического и объектно ориентированного программирования.
Основы алгоритмического и объектно ориентированного программирования.Основы алгоритмического и объектно ориентированного программирования.
Основы алгоритмического и объектно ориентированного программирования.
 
Отладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программОтладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программ
 
семинар Bpmn
семинар Bpmnсеминар Bpmn
семинар Bpmn
 
прак 15.docx
прак 15.docxпрак 15.docx
прак 15.docx
 
пр 15.docx
пр 15.docxпр 15.docx
пр 15.docx
 
"Опыт создания системы управления сборкой и тестированием" (полная)
"Опыт создания системы управления сборкой и тестированием" (полная)"Опыт создания системы управления сборкой и тестированием" (полная)
"Опыт создания системы управления сборкой и тестированием" (полная)
 
QA Fest 2018. Анастасия Асеева. Shift-Left Testing
QA Fest 2018. Анастасия Асеева. Shift-Left TestingQA Fest 2018. Анастасия Асеева. Shift-Left Testing
QA Fest 2018. Анастасия Асеева. Shift-Left Testing
 
Predzazhita 2009 v16
Predzazhita 2009 v16Predzazhita 2009 v16
Predzazhita 2009 v16
 
оп.05 основы программирования
оп.05 основы программированияоп.05 основы программирования
оп.05 основы программирования
 
Андрей Кирпичев "Гибкая модульность инструментами АОП"
Андрей Кирпичев  "Гибкая модульность инструментами АОП"Андрей Кирпичев  "Гибкая модульность инструментами АОП"
Андрей Кирпичев "Гибкая модульность инструментами АОП"
 

Plus de Unguryan Vitaliy

Модульное тестирование.
Модульное тестирование. Модульное тестирование.
Модульное тестирование. Unguryan Vitaliy
 
Архитектурный шаблон MVC
Архитектурный шаблон MVCАрхитектурный шаблон MVC
Архитектурный шаблон MVCUnguryan Vitaliy
 
Работа в команде, управление программными проектами
Работа в команде, управление программными проектамиРабота в команде, управление программными проектами
Работа в команде, управление программными проектамиUnguryan Vitaliy
 
Системы контроля версий
Системы контроля версийСистемы контроля версий
Системы контроля версийUnguryan Vitaliy
 
Cookies, session и другое в JSP
Cookies, session и другое в JSPCookies, session и другое в JSP
Cookies, session и другое в JSPUnguryan Vitaliy
 
Java. Интерфейс Reference - типы ссылок
Java. Интерфейс Reference -  типы ссылокJava. Интерфейс Reference -  типы ссылок
Java. Интерфейс Reference - типы ссылокUnguryan Vitaliy
 
Java. Интерфейс Queue - очередь
Java. Интерфейс Queue - очередьJava. Интерфейс Queue - очередь
Java. Интерфейс Queue - очередьUnguryan Vitaliy
 
Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.Unguryan Vitaliy
 
Java. Интерфейс Set - наборы (множества) и его реализации.
Java. Интерфейс Set - наборы (множества) и его реализации.Java. Интерфейс Set - наборы (множества) и его реализации.
Java. Интерфейс Set - наборы (множества) и его реализации.Unguryan Vitaliy
 

Plus de Unguryan Vitaliy (11)

Модульное тестирование.
Модульное тестирование. Модульное тестирование.
Модульное тестирование.
 
Архитектурный шаблон MVC
Архитектурный шаблон MVCАрхитектурный шаблон MVC
Архитектурный шаблон MVC
 
Работа в команде, управление программными проектами
Работа в команде, управление программными проектамиРабота в команде, управление программными проектами
Работа в команде, управление программными проектами
 
Системы контроля версий
Системы контроля версийСистемы контроля версий
Системы контроля версий
 
Принципы SOLID
Принципы SOLIDПринципы SOLID
Принципы SOLID
 
Cookies, session и другое в JSP
Cookies, session и другое в JSPCookies, session и другое в JSP
Cookies, session и другое в JSP
 
Java. Интерфейс Reference - типы ссылок
Java. Интерфейс Reference -  типы ссылокJava. Интерфейс Reference -  типы ссылок
Java. Интерфейс Reference - типы ссылок
 
Java. Интерфейс Queue - очередь
Java. Интерфейс Queue - очередьJava. Интерфейс Queue - очередь
Java. Интерфейс Queue - очередь
 
Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.
 
Java. Интерфейс Set - наборы (множества) и его реализации.
Java. Интерфейс Set - наборы (множества) и его реализации.Java. Интерфейс Set - наборы (множества) и его реализации.
Java. Интерфейс Set - наборы (множества) и его реализации.
 
List - списки
List - списки List - списки
List - списки
 

Spring AOP

  • 3. Spring AOP AOP - являются одним из основных принципов, на которых построен главный продукт компании SpringSource – Spring Framework.
  • 5. Spring AOP В основе аспектно-ориентированного программирования лежит понятие crosscutting concerns, которое не имеет пока устоявшегося эквивалента в русском языке. Наиболее близким по смыслу считается и чаще всего используется словосочетание «сквозная функциональность»
  • 6. Spring AOP Под сквозной функциональностью понимается функциональность, реализовать которую в отдельном компоненте языка программирования традиционными средствами процедурного или объектно- ориентированного программирования или очень сложно, или вообще невозможно.
  • 7. Spring AOP Кроме того, эта функциональность не относятся напрямую к предметной области. Примером такой функциональности может являться например протоколирование работы системы (logging).
  • 8. Spring AOP Использование аспектно- ориентированного программирования помогает следовать принципу разделения ответственности (separation of concerns), что положительно сказывается на многих характеристиках разрабатываемой информационной системы.
  • 10. Основные понятия АОП Точка соединения (joinpoint) — точка в программе, где существует возможность выполнить дополнительный код средствами АОП. Различные реализации АОП имеют различные возможные точки соединения, таковыми могут являться момент вызова методов класса или обращений к полям объекта.
  • 11. Основные понятия АОП Совет (advice) —класс, реализующий сквозную функциональность. Существуют различные типа советов:  выполняемые до точки соединения,  после  вместо неё.
  • 12. Основные понятия АОП Срез (pointcut) — точка соединения (joinpoint), которая выбрана для исполнения в ней сквозной функциональности, определенная советом (advice).
  • 13. Основные понятия АОП Аспект (aspect) — под аспектом понимают комбинацию, состоящую из среза (pointcut) и реализующего сквозную функциональность совета (advice). Аспект изменяет поведение остального кода, исполняя совет в точках соединения, определённых некоторым срезом. В Spring для этого используется также понятие advisor.
  • 14. Основные понятия АОП Внедрение или введение (introduction) — под этим термином понимают процесс модификации объекта путем добавления дополнительных полей и /или методов. Внедрение также может быть использовано для реализации объектом интерфейса без явного указания этого в классе объекта.
  • 15. Основные понятия АОП Связывание (weaving) – связывание аспектов с объектами для создания новых, «расширенных» объектов.
  • 16. Основные понятия АОП Цель или целевой объект (target) – объект, являющийся результатом связывания (weaving), то есть реализующий первоначальную бизнес логику плюс сквозная функциональность, выполненная одним или несколькими аспектами.
  • 17. Spring AOP Существует два различных способа реализации аспектно-ориентированного программирования: статический и динамический. Эти способы различаются моментами времени, когда происходит связывание (weaving) и способом, как это связывание происходит.
  • 18. Spring AOP Существует два различных способа реализации аспектно-ориентированного программирования: статический и динамический. Эти способы различаются моментами времени, когда происходит связывание (weaving) и способом, как это связывание происходит.
  • 19. Статическое АОП При статической реализации аспектно- ориентированного программирования связывание является отдельным шагом в процессе построения программного продукта (build process) путем модификации байт-кода (bytecode) классов, изменяя и дополняя его необходимым образом.
  • 20. Динамическое АОП В динамическом АОП процесс связывания (weaving) происходит динамически в момент исполнения. В Spring Framework используется именно такой способ связывания и это реализовано с помощью использования специальных объектов-посредников (proxy) для объектов, к которым должны быть применены советы (advice).
  • 21. Динамическое АОП public class Caller { private Callee callee; public void someMethod() { callee.operationA(); } }
  • 23. Динамическое АОП Средствами Spring AOP поддерживается только один вид точек соединения (jointpoint) - вызовы методов классов. Это является существенным упрощением по сравнению с такой тяжеловесной реализацией АОП как AspectJ.
  • 24. Динамическое АОП Средствами Spring AOP поддерживается только один вид точек соединения (jointpoint) - вызовы методов классов. Это является существенным упрощением по сравнению с такой тяжеловесной реализацией АОП как AspectJ.
  • 25. execution execution - определяет точки соединения на основании имени метода. Наиболее часто используемое выражение для определения jointpoint. При использовании выражения execution возможно указывать пакет, имя класса, название метода, видимость метода, тип возвращаемого объекта и тип аргументов.
  • 26. within within - определяет возможные точки соединения только у объектов заданного типа или у классов, определенных в заданном пакете и его подпакетах.
  • 27. this this - определяет точки соединения для всех объектов, у которых объект посредника (AOP proxy) реализует указанный в аннотации тип..
  • 28. this target - определяет точки соединения для всех объектов, у которых целевой объект (target) реализует указанный в аннотации тип.
  • 29. args args - определяет точки соединения сравнением аргументов вызываемого метода с типами аргументов, указанных в аннотации.
  • 30. args bean - определяет точки соединения для управляемых компонентов (beans), имеющих определенный в аннотации идентификатор или имя (атрибуты id или name компонента). При указании имени бина возможно использовать групповой символ (wildcard)
  • 31. args @annotation - задает точки соединения для методов, которые были «помечены» указанной аннотацией
  • 32. @Before Метод аспекта, помеченный @Before , будет вызван перед выполнением метода целевого класса. В отличие от аннотации @Around, избежать вызова метода целевого класса возможно только генерацией исключительной ситуации (exception) внутри аспекта.
  • 33. Ограничения Аспект нельзя применить к static методам и final классам. Это обусловлено тем, что proxy-объекты создаются путём наследования от исходных классов (поэтому нельзя создать proxy к final классу; по этой же причине нельзя применить аспект к static методу: static методы не наследуются)
  • 34. Ограничения Spring AOP не умеет применять аспекты к конструкторам и свойствам класса. Методы служащие точками соединения (join point) должны быть public.