English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

AOP Spring

Aspect Oriented Programming(AOP) в некотором смысле является дополнением к OOP, так как он также предоставляет функции модульности. Но ключевыми единицами модульности являются аспекты, а не классы.

AOP делит логику программы на различные части (называемые аспектами). Это используется для междисциплинарные аспектыдля повышения модульности.

cross-cutting concernsЭто аспект, который влияет на весь приложение, и его следует как можно больше сосредоточить в одном месте кода, например, управление транзакциями, аутентификация, запись日志, безопасность и т.д.


Почему использовать AOP?

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

class A{
public void m1(){...}
public void m2(){...}
public void m3(){...}
public void m4(){...}
public void m5(){...}
public void n1(){...}
public void n2(){...}
public void p1(){...}
public void p2(){...}
public void p3(){...}
}

С началом от m есть 5 методов, с началом от n есть 2 метода, с началом от p есть 3 метода.

ПонимаюМне нужно вести журнал и отправлять

Проблемы без AOPМы можем вызывать методы, начинающиеся с m (ведение журнала и отправка уведомлений). В этом случае нам нужно будет написать код для всех 5 методов.

Но если клиент в будущем скажет, что не нужно отправлять уведомления, то нужно будет изменить все методы. Это приведет к проблемам в поддержке.

Решение AOPМы не должны вызывать методы из методов. Теперь мы можем определять другие аспекты в методах класса, такие как ведение журнала, отправка уведомлений и т.д. Их записи даются в файле xml.

В будущем, если клиент скажет, что нужно удалить функциональность уведомлений, нам нужно будет только изменить файл xml. Таким образом, поддерживать AOP легко.

Где использовать AOP?

AOP主要用于 следующие случаи:

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

Концепции и термины AOP

Концепции и термины AOP такие:

Join point Advice Pointcut Введение Целевой объект Аспект Интерцептор AOP прокси Вязание

Join point

Join point - это любой момент в программе, например, выполнение метода, обработка исключений, доступ к полю и т.д. Spring поддерживает только Join point выполнения методов.

Advice

Advice представляет собой действия, которые аспект выполняет в определенном Join point. Существуют различные типы Advice:

Advice Before: Он выполняется до Join point. Advice After Returning: Он выполняется после нормального завершения слияния. Advice After Throwing: Если метод завершается из-за выброса исключения, то выполняется. Advice After (finally): Он выполняется после Join point, независимо от того, заканчивается ли Join point нормальным возвращением или исключением. Advice Around: Он выполняется до и после Join point.

Pointcut

Это один из языков выражения AOP, который соответствует Join point.

Введение

Это означает другие методы и поля типа introductions. Это позволяет вам вводить новые интерфейсы в любые объекты с рекомендациями.

Целевой объект

Это объект или несколько объектов с аспектами советов. В Spring это также называется объектом прокси, так как Spring AOP реализуется с использованием прокси в время выполнения.

Аспект

Это класс, содержащий советы, точки вхождения и т.д.

Интерцептор

Это аспект, содержащий только один совет.

AOP прокси

Это используется для реализации контрактов аспектов, созданных AOP фреймворком. В Spring фреймворке это будет JDK динамический прокси или CGLIB прокси.

Вязание

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

AOP реализация

AOP реализуется следующим образом:

AspectJ SpringAOP JBoss AOP

AOP Spring

AOP Spring может использоваться следующими тремя способами. Однако наиболее широко используемый метод - это стиль аннотаций AspectJ. Ниже приведены три метода использования AOP Spring:

Старый стиль Spring 1.2 (базируется на dtd) (поддерживается и в Spring 3) Стиль конфигурации с использованием аннотаций AspectJ Стиль конфигурации XML с использованием шаблонов