Одним из ключевых компонентов Spring Framework является структура Аспектно-ориентированного программирования (AOP) . Аспектно-ориентированное программирование влечет за собой разделение логики программы на отдельные части, называемые так называемыми проблемами. Функции, охватывающие несколько точек приложения, называются сквозными задачами, и эти сквозные задачи концептуально отделены от бизнес-логики приложения. Существуют различные общие хорошие примеры таких аспектов, как ведение журнала, аудит, декларативные транзакции, безопасность, кэширование и т. Д.
Ключевой единицей модульности в ООП является класс, тогда как в АОП единицей модульности является аспект. Внедрение зависимостей помогает отделить объекты приложения друг от друга, а AOP помогает отделить сквозные задачи от объектов, на которые они влияют. AOP подобен триггерам в таких языках программирования, как Perl, .NET, Java и других.
Модуль Spring AOP предоставляет перехватчики для перехвата приложения. Например, когда метод выполняется, вы можете добавить дополнительные функции до или после выполнения метода.
АОП Терминологии
Прежде чем мы начнем работать с AOP, давайте ознакомимся с концепциями и терминологией AOP. Эти термины не являются специфическими для Spring, скорее они связаны с AOP.
Sr.No | Условия и описание |
---|---|
1 |
аспект Это модуль, который имеет набор API, обеспечивающих сквозные требования. Например, модуль регистрации будет называться аспектом AOP для регистрации. Приложение может иметь любое количество аспектов в зависимости от требования. |
2 |
Точка соединения Это представляет собой точку в вашем приложении, где вы можете подключить аспект AOP. Вы также можете сказать, что это фактическое место в приложении, где будет выполняться действие с использованием среды Spring AOP. |
3 |
Совет Это фактическое действие, которое должно быть выполнено либо до, либо после выполнения метода. Это фактический фрагмент кода, который вызывается во время выполнения программы средой Spring AOP. |
4 |
Pointcut Это набор из одной или нескольких точек соединения, в которых должен выполняться совет. Вы можете указать pointcut, используя выражения или шаблоны, как мы увидим в наших примерах AOP. |
5 |
Вступление Введение позволяет добавлять новые методы или атрибуты к существующим классам. |
6 |
Целевой объект Объект рекомендуется одним или несколькими аспектами. Этот объект всегда будет прокси-объектом, также называемым рекомендованным объектом. |
7 |
ткачество Плетение — это процесс связывания аспектов с другими типами приложений или объектами для создания рекомендованного объекта. Это может быть сделано во время компиляции, загрузки или во время выполнения. |
аспект
Это модуль, который имеет набор API, обеспечивающих сквозные требования. Например, модуль регистрации будет называться аспектом AOP для регистрации. Приложение может иметь любое количество аспектов в зависимости от требования.
Точка соединения
Это представляет собой точку в вашем приложении, где вы можете подключить аспект AOP. Вы также можете сказать, что это фактическое место в приложении, где будет выполняться действие с использованием среды Spring AOP.
Совет
Это фактическое действие, которое должно быть выполнено либо до, либо после выполнения метода. Это фактический фрагмент кода, который вызывается во время выполнения программы средой Spring AOP.
Pointcut
Это набор из одной или нескольких точек соединения, в которых должен выполняться совет. Вы можете указать pointcut, используя выражения или шаблоны, как мы увидим в наших примерах AOP.
Вступление
Введение позволяет добавлять новые методы или атрибуты к существующим классам.
Целевой объект
Объект рекомендуется одним или несколькими аспектами. Этот объект всегда будет прокси-объектом, также называемым рекомендованным объектом.
ткачество
Плетение — это процесс связывания аспектов с другими типами приложений или объектами для создания рекомендованного объекта. Это может быть сделано во время компиляции, загрузки или во время выполнения.
Типы Советов
Аспекты Spring могут работать с пятью советами, упомянутыми ниже:
Sr.No | Советы и описание |
---|---|
1 |
до Запустите совет перед выполнением метода. |
2 |
после Запускайте совет после выполнения метода, независимо от его результата. |
3 |
после возвращения Запускайте рекомендацию после выполнения метода, только если метод завершается успешно. |
4 |
после того, как бросание Запускайте рекомендацию после выполнения метода, только если метод завершается с помощью исключения. |
5 |
вокруг Выполните совет до и после вызова рекомендованного метода. |
до
Запустите совет перед выполнением метода.
после
Запускайте совет после выполнения метода, независимо от его результата.
после возвращения
Запускайте рекомендацию после выполнения метода, только если метод завершается успешно.
после того, как бросание
Запускайте рекомендацию после выполнения метода, только если метод завершается с помощью исключения.
вокруг
Выполните совет до и после вызова рекомендованного метода.
Реализация пользовательских аспектов
Spring поддерживает подход стиля аннотации @AspectJ и подход на основе схемы для реализации пользовательских аспектов. Эти два подхода были подробно объяснены в следующих разделах.
Аспекты реализуются с использованием обычных классов наряду с конфигурацией на основе XML.
@AspectJ относится к стилю объявления аспектов как обычных классов Java, аннотированных аннотациями Java 5.