Для простого объяснения некоторых основных терминов АОП, пожалуйста, обратитесь к мой другой ответ . Пожалуйста, прочитайте это прежде, чем продолжить читать здесь.
Таким образом, целевой объект - это компонент (Java или Spring), к которому вы хотите добавить новое поведение, обычно сквозную задачу , то есть некоторое поведение, которое должно быть применяется ко многим классам в вашей кодовой базе.
аспект - это класс, в котором вы реализуете эту сквозную задачу, а также определяете, где и как ее применять. , где определяется pointcut , своего рода поисковым выражением, которое находит релевантные части вашей кодовой базы для применения поведения. как реализован в аспектном методе, называемом advice .
Поэтому, когда мы говорим, что аспект советует объекту, это означает, что он добавляет (сквозное) поведение к нему, не изменяя сам класс.
- В Spring AOP это в основном перехват метода, то есть выполнение чего-либо до или после выполнения метода.
- В более мощном AspectJ вы также можете перехватывать изменения переменных-членов и выполнение конструктора. Кроме того, вы можете изменить саму структуру класса, добавив новые члены или методы или заставив целевой класс реализовать интерфейс и т. Д.