Spring Start Here 4. Аспекты. Flashcards
Аспект
Аспекты — это способ, которым фреймворк перехватывает вызов метода и может изменить его выполнение.
Данная технология позволяет извлечь часть логики, принадлежащей методу.
Целевой объект
(target object)
Бин, в котором объявляется прерываемый аспектом метод.
Структура Аспекта
Точка соединения (Join Points): Событие, запускающее выполнение аспекта.
Это места в программе, в которых может быть применён аспект.
Например, это может быть вызов метода, изменение поля или исключение.
Совет (Advice):
Это код, который выполняется в определённый момент жизненного цикла программы.
Определяет когда приложение должно выполнять логику аспекта (например, перед, после или вместо вызова метода).
Точка среза (Pointcut):
Выполнение каких методов должен перехватывать фреймворк и реализовывать аспект.
В каких именно точках соединения должен быть применён аспект.
Виды Advice’ов
@Before:
выполняется перед выполнением метода.
@After:
выполняется после завершения метода (независимо от того, завершился он успешно или с ошибкой).
@AfterReturning:
выполняется только в случае успешного завершения метода.
@AfterThrowing:
выполняется, если метод выбрасывает исключение.
@Around:
оборачивает выполнение метода, давая возможность как изменять поведение метода, так и выполнять действия до и после его выполнения.
Вплетение (weaving)
Это процесс внедрения аспектов в целевой код, и в контексте Spring это обычно происходит на этапе выполнения через создание прокси-объектов, которые перехватывают вызовы методов целевых объектов.
Это позволяет добавлять дополнительное поведение (например, логирование или управление транзакциями) без необходимости изменять сам код целевых объектов.