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

AOP SpringBoot

Этот приложение обычно разрабатывается в многослойном формате. Типичный Java приложение имеет следующие уровни:

Слой веба: Он использует REST или веб-приложение для公开Сервис. Слой бизнеса: Это реализует данные приложенияБизнес-логика. Слой данных: Это реализует данные приложенияЛогика сохранения.

Задачи каждого уровня различаются, но есть общие аспекты, которые применяются ко всем уровням: журналирование, безопасность, валидация, кэширование и т.д.. Эти общие аспекты называются Кросс-долейные внимание.

Если мы реализуем эти внимание на каждом уровне по отдельности, код станет сложнее для поддержания. Чтобы преодолеть эту проблему: Аспектно-ориентированное программирование(AOP) предоставляет решение для решения проблем, связанных с跨领域.

Считайте跨领域的 внимание как аспект. Определите точку входа, чтобы указать, где необходимо применить аспект.

Это гарантирует, что跨领域的 внимание определено в когерентном компоненте кода.

AOP

AOP (Аспектно-ориентированное программирование)Это через разрешение CGLIB代理. Есть два типа AOP агентов:Разделение для повышения модульности программирования. Эти跨部门 внимание отличаются от основной бизнес-логики. Мы можем добавить другие действия к существующему коду, не изменяя сам код.

Фреймворк AOP Spring помогает нам реализовать эти跨领域的关注点.

使用AOP,我们在一个地方。我们可以自由定义应用此功能的方式和位置,而无需修改应用新功能的类。现在,可以将横切关注点模块化为特殊类,称为 Во-вторых, бизнес-модуль содержит только код, связанный с основными интересами. Второстепенные интересы уже перемещены.

Используя AOP, мы можем свободно определять способ и место применения этой функции, не изменяя классы, добавляющие новую функциональность. Теперь можно модульизировать модуль横切成特殊ный класс, называемый аспекта имеютдва

Преимущества: В первую очередь, логика каждого интереса теперь сосредоточена в одном месте, а не разбросана по всему кодовой базе.Во-вторых, бизнес-модуль содержит только код, связанный с основными интересами. Второстепенные интересы уже перемещены.

Аспект .У каждого аспекта есть обязанности, которые необходимо выполнить, называемые

Advice

. Мы можем реализовать функциональность аспектов в программе на одном или нескольких соединениях. Преимущества AOP Он реализован на чистом Java. Не требует специальных процессов компиляции. Он поддерживает только соединения выполнения методов. JDK динамический проксии только runtime weaving.

CGLIB代理. Есть два типа AOP агентов:

Межоблачное внимание

Межоблачные внимание - это внимание, которое мы хотим реализовать в приложении в нескольких местах. Оно влияет на весь приложение.

Aspect: термины AOPАспект - это модуль, который封装аетиadvicepointcutsи предоставитьcross-cutting Могут быть множество аспектов. Мы можем использовать аспекты с @Aspect Pointcut: обычные классы с аннотациями для реализации аспектов.切入点 - это выражение, которое выбирает один или несколько соединений для выполнения Advice. Мы можем использоватьилиexpressionpattern AspectJ язык выражения切入点. Это выражение, которое определяет切入点. Оно использует различные типы выражений, соответствующие соединению. В Spring Framework используется Join point: Join point - это точка в приложении, где применяется AOP аспектЭто экземпляр специфического выполнения Advice. В AOP соединение может бытьточек.и т.д. Это точки, в которых выполняется метод, обработка исключений, изменение значения переменной объекта. Advice: Advice - это то, что мы вызываем перед выполнением метода,beforeилиafterмероприятий. Это фрагмент кода, который вызывается в процессе выполнения программы. В рамке Spring AOP естьпятьТипов Advice: В Advice before, after, after-returning, after-throwing иAround advice. Это Advice для специфическогоAdvice на join point. Мы将进一步讨论 эти Advice в этом разделе. Target object: Объект, применяющий Advice, называетсяtarget objectЦелевой объект всегда являетсяproxiedЭто означает, что во время выполнения создается подкласс, перекрывающий целевой метод, и содержащий Advice. Weaving: Это процесс объединения аспектов с другими типами приложений.linking aspectsпроцесс. Мы можемвремя загрузки, runtime.иКомпиляционное времявплетение.

Proxy: Это объект, созданный после применения Advice к целевому объекту, и называется proxy . Spring AOP реализует JDK динамический прокси, чтобы использовать目标ный класс и Advice для создания прокси-класса. Эти классы называются AOP proxy классами.

AOP и OOP

Разница между AOP и OOP:

AOP OOP
Aspect: Это кодовая единица, которая封装яет точки切入点, Advice и свойства.Class: Это кодовая единица, которая封装ирует методы и свойства.
Pointcut: Он определяет группу точек входа для выполнения Advice.Подпись метода: . Он определяет точку входа для выполнения тела метода.
Advice: Это реализация междисциплинарных интересов.Тела методов: Это реализация бизнес-логических проблем.
Waver: создает код (исходный или объект) с помощью Advice. Компилятор: он преобразует исходный код в целевой код.

Spring AOP и AspectJ

Разница между AOP и OOP:

Spring AOP AspectJ
Требуется отдельный процесс компиляции.Он требует компилятора AspectJ.
Он поддерживает только切入点 выполнения методов.Он поддерживает все точки切入点.
Он может быть реализован на beanах, управляемых Spring Container.Он может быть реализован на всех объектах области.
Он поддерживает только методный уровень вплетения.Он может колебаться в полях, методах, конструкторах, статических инициализаторах, финальных классах и т.д.

Типы AOP Advice

AOP Advice имеет пять типов, как показано ниже:

Before Advice After Advice Around Advice After Throwing After Returning

Before Advice: Advice, выполняемые до точки подключения, вызываются до уведомления. Мы используем @Before Комментарии помечают Advice как Before уведомление.

After Advice: Advice, выполняемые после точки подключения, называются после уведомления. Мы используем @After Комментарии помечают Advice как After уведомление.

Around Advice: Внутри и после точки подключения выполняются советы (Advice).

After Throwing: Advice, выполняемая при возникновении исключения в точке соединения.

After Returning: Advice, выполняемая при успешном выполнении метода.

Прежде чем реализовать AOP в приложении, нам нужно добавить в файл pom.xml Spring AOP Зависимости

Spring Boot Starter AOP

Spring Boot Starter AOP предоставляет зависимости для Spring AOP и AspectJ. AOP предоставляет базовые функции AOP, а AspectJ предоставляет полный фреймворк AOP.

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>

В следующем разделе мы реализуем различные Advice в приложении.