АОП с 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. |