АОП с Spring Framework

Одним из ключевых компонентов Spring Framework является Aspect oriented programming (AOP)фреймворк. Аспектно-ориентированное программирование влечет за собой разбиение логики программы на отдельные части, так называемые задачи. Функции, охватывающие несколько точек приложения, называютсяcross-cutting concernsи эти сквозные проблемы концептуально отделены от бизнес-логики приложения. Существуют различные общие хорошие примеры таких аспектов, как ведение журнала, аудит, декларативные транзакции, безопасность, кеширование и т. Д.

Ключевой единицей модульности в ООП является класс, тогда как в АОП единицей модульности является аспект. Внедрение зависимостей помогает отделить объекты приложения друг от друга, а АОП помогает отделить сквозные проблемы от объектов, на которые они влияют. АОП похож на триггеры в таких языках программирования, как Perl, .NET, Java и другие.

Модуль Spring AOP предоставляет перехватчики для перехвата приложения. Например, при выполнении метода вы можете добавить дополнительные функции до или после выполнения метода.

Терминология АОП

Прежде чем мы начнем работать с АОП, давайте познакомимся с концепциями и терминологией АОП. Эти термины не относятся к Spring, скорее, они связаны с АОП.

Старший Нет Условия и описание
1

Aspect

Это модуль, который имеет набор API, обеспечивающих сквозные требования. Например, модуль ведения журнала будет называться аспектом АОП для ведения журнала. Приложение может иметь любое количество аспектов в зависимости от требований.

2

Join point

Это представляет собой точку в вашем приложении, где вы можете подключить аспект АОП. Вы также можете сказать, что это фактическое место в приложении, где будет выполняться действие с использованием инфраструктуры Spring AOP.

3

Advice

Это фактическое действие, которое нужно предпринять до или после выполнения метода. Это реальный фрагмент кода, который вызывается во время выполнения программы фреймворком Spring AOP.

4

Pointcut

Это набор из одной или нескольких точек соединения, в которых должен выполняться совет. Вы можете указать pointcut с помощью выражений или шаблонов, как мы увидим в наших примерах АОП.

5

Introduction

Введение позволяет вам добавлять новые методы или атрибуты к существующим классам.

6

Target object

Объект, о котором сообщают один или несколько аспектов. Этот объект всегда будет прокси-объектом, также называемым рекомендованным объектом.

7

Weaving

Плетение - это процесс связывания аспектов с другими типами приложений или объектами для создания рекомендованного объекта. Это можно сделать во время компиляции, загрузки или во время выполнения.

Типы советов

Аспекты Spring могут работать с пятью видами рекомендаций, упомянутыми ниже:

Старший Нет Совет и описание
1

before

Выполнить совет перед выполнением метода.

2

after

Выполнять совет после выполнения метода, независимо от его результата.

3

after-returning

Выполнять совет после выполнения метода, только если метод завершился успешно.

4

after-throwing

Выполнять совет после выполнения метода только в том случае, если метод завершается выдачей исключения.

5

around

Выполните advice до и после вызова рекомендованного метода.

Реализация пользовательских аспектов

Весна поддерживает @AspectJ annotation style подход и schema-basedподход к реализации нестандартных аспектов. Эти два подхода подробно описаны в следующих разделах.

Старший Нет Подход и описание
1 На основе XML-схемы

Аспекты реализуются с использованием обычных классов вместе с конфигурацией на основе XML.

2 На основе @AspectJ

@AspectJ относится к стилю объявления аспектов как обычных классов Java, аннотированных аннотациями Java 5.