Ответы:
Думайте о проблеме как о функциональной группе, например, ведение журнала, аудит, безопасность
Эти функциональные возможности когда-либо присутствуют в большинстве кода, но на самом деле они не существуют в наших классах animal-> dog - они являются функциональностью, которая должна существовать во многих классах - они являются сквозными проблемами .
Точка соединения - это место в коде, где фактически выполняется код аспекта.
Срез точек , как сказать , что код работает на jointpoint.
Переплетение - это когда компилятор / система берет ваш обычный код и включает в себя весь код AOP, чтобы он вызывал правильный код и т. Д. - это можно считать дополнительным этапом предварительной компиляции.
Простой понятный пример:
Пожалуйста, имейте в виду, что терминология немного отличается между различными реализациями и средами AOP.
Каждое определение основывается на предыдущих.
Что-то, что беспокоит вас (беспокойство) повсюду (сквозное) в вашем приложении. например, регистрация или безопасность
Кусок кода , который автоматически добавляется перед тем , после того , или оба ( вокруг ) существующий код
Application code
|
|
|
|
\|/
|
JoinPoint ----------->("before" aspect, on the way in) // just before your intercepted application code
Pointcut start--------> public String myMethod(params ...)
//your application code
Pointcut finish--------> return (foo)
JoinPoint ----------->("after" aspect, on the way out) // just after your intercepted application code
|
\|/
|
|
|
Application code
Место в выполнении кода, где выполняется часть аспекта.
Точка, в которой ваш аспект «соединяет» pointcut. В «before» joinPoint у вас будет доступ к параметрам, в «after» joinPoint у вас будет доступ к возвращаемому значению. Если выброшено исключение, вам может потребоваться «try-catch-finally», чтобы обработать или повторно выдать его.
Процесс добавления аспектов вокруг pointcut