Предположим, мы применили два совета один тип После и другого типа AfterReturning на том же jointpoint (бизнес-функции), то какой совет будет ссылаться на первый если совместная точка успешно выполняетсяSpring AOP: После того, как или AfterReturning, которые совет будет вызван первый
ответ
призыванием советы разного типа, нанесенного на одной и той же jointpoint (основной бизнес связанных модулей) следующим образом:
1.Around
2.Before и/или после
3 .AfterReturning или AfterThrowing
Предположим, что мы применяли все пять типов советов на том же jointpoint то поток будет как:
Вокруг советы типа будет вызываться и код, прежде чем
pjp.proceed()
из Вокруг советы типа будет выполняться, где PJP является ссылкой переменная ProceedingJoinPointинтерфейс.Перед началом использования совет типа будет вызываться и выполняться полностью.
код внутри jointpoint будет выполнен полностью.
код после
pjp.proceed()
из Вокруг советов типа будут выполняться, если jointpoint выполняется успешно в противном случае пропустите этот шаг и перейдите к шагу 5. Если это модифицированный возвращаемого значения этого нового возвращаемого значения будет быть осуществлены к следующим совет или метод вызов.После тип совета будет вызываться и выполняться полностью.
AfterReturning советов типа будет вызываться и выполняться полностью, если jointpoint выполняется успешно, если еще jointpoint бросает какую-либо ошибка затем AfterThrowing совет типа будет запущен и выполнен полностью.
Вместо повторного ответа, вот ссылка на весну AOP, которая описывает заказ.