Что такое целевой объект в Spring AOP

Я новичок в Spring AOP, и я просматриваю документацию Spring AOP, чтобы понять концепции, но не смог понять «целевой объект».

в документации написано целевой объект - это «объект, который рекомендуется одним или несколькими аспектами. Также называется рекомендуемым объектом»..

что здесь означает консультирование по одному или нескольким аспектам? Может ли кто-нибудь объяснить мне, что такое целевой объект в терминах Лаймана, поскольку я все еще новичок.

Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
0
0
1 144
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Простое объяснение некоторых основных терминов АОП см. в мой другой ответ. Пожалуйста, прочтите сначала это, прежде чем продолжать читать здесь.

Таким образом, целевой объект — это компонент (Java или Spring), к которому вы хотите добавить новое поведение, обычно это сквозная забота, т. е. некоторое поведение, которое должно применяться ко многим классам в вашей кодовой базе.

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

Поэтому, когда мы говорим, что аспект советует объекту, это означает, что он добавляет к нему (сквозное) поведение без изменения самого класса.

  • В Spring AOP это в основном перехват метода, то есть выполнение чего-либо до или после выполнения метода.
  • В более мощном AspectJ вы также можете перехватывать изменения переменных-членов и выполнение конструктора. Кроме того, вы можете изменить саму структуру класса, добавив новые члены или методы или заставив целевой класс реализовать интерфейс и т. д.

Можно ли определить несколько целей, как показано ниже:

@Before(value = "com.test.createUpdateDeletePointCut() && (target(com.testlab.A) || target(com.testlab.B))")

Другие вопросы по теме