2016-07-05 6 views
1

Предположим, мы применили два совета один тип После и другого типа AfterReturning на том же jointpoint (бизнес-функции), то какой совет будет ссылаться на первый если совместная точка успешно выполняетсяSpring AOP: После того, как или AfterReturning, которые совет будет вызван первый

ответ

2

призыванием советы разного типа, нанесенного на одной и той же jointpoint (основной бизнес связанных модулей) следующим образом:

1.Around

2.Before и/или после

3 .AfterReturning или AfterThrowing

Предположим, что мы применяли все пять типов советов на том же jointpoint то поток будет как:

  1. Вокруг советы типа будет вызываться и код, прежде чем pjp.proceed() из Вокруг советы типа будет выполняться, где PJP является ссылкой переменная ProceedingJoinPointинтерфейс.

  2. Перед началом использования совет типа будет вызываться и выполняться полностью.

  3. код внутри jointpoint будет выполнен полностью.

  4. код после pjp.proceed() из Вокруг советов типа будут выполняться, если jointpoint выполняется успешно в противном случае пропустите этот шаг и перейдите к шагу 5. Если это модифицированный возвращаемого значения этого нового возвращаемого значения будет быть осуществлены к следующим совет или метод вызов.

  5. После тип совета будет вызываться и выполняться полностью.

  6. AfterReturning советов типа будет вызываться и выполняться полностью, если jointpoint выполняется успешно, если еще jointpoint бросает какую-либо ошибка затем AfterThrowing совет типа будет запущен и выполнен полностью.

0

Вместо повторного ответа, вот ссылка на весну AOP, которая описывает заказ.