Обмен технологиями

Подводные камни SpringAOP

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Вставьте сюда описание изображения
Несколько распространенных типов уведомлений и их основные функции в АОП:

  • @Before: предварительное уведомление, выполняемое до выполнения целевого метода.
  • @After: почтовое уведомление, независимо от результата выполнения метода (включая исключения), будет выполнено после выполнения целевого метода.
  • @AfterReturning: уведомление после возврата, выполняется после нормального завершения целевого метода, но не будет выполнено, если метод выдает исключение.
  • @AfterThrowing: уведомление об исключении, выполняемое, когда целевой метод генерирует исключение.
  • @Around: объемное уведомление, вы можете выполнять настраиваемые операции до и после выполнения целевого метода и даже решить, продолжать ли выполнение целевого метода.

Разница между порядком выполнения АОП в Spring4 и Spring5

Порядок выполнения АОП в Spring4

  • Обычная последовательность выполнения:
    1. @Before (предварительное уведомление)
    2. выполнение целевого метода
    3. @After (уведомление о публикации)
    4. @AfterReturning (уведомление после возвращения)
  • Последовательность выполнения исключения:
    1. @Before (предварительное уведомление)
    2. Выполнение целевого метода (выдает исключение)
    3. @After (уведомление о публикации)
    4. @AfterThrowing (уведомление об исключении)

Если настроено уведомление о объемном звучании (@Around), предварительная обработка уведомления о объемном звучании будет выполняться перед @Before, а постобработка уведомления о объемном звучании также будет выполняться перед @After, @AfterReturning и @AfterThrowing.

Порядок выполнения АОП в Spring5

В Spring 5 порядок выполнения АОП претерпел некоторые изменения, в основном отраженные в порядке выполнения @AfterReturning и @After:

  • Обычная последовательность выполнения:
    1. @Before (предварительное уведомление)
    2. выполнение целевого метода
    3. @AfterReturning (уведомление после возвращения)
    4. @After (уведомление о публикации)
  • Последовательность выполнения исключения:
    1. @Before (предварительное уведомление)
    2. Выполнение целевого метода (выдает исключение)
    3. @AfterThrowing (уведомление об исключении)
    4. @After (уведомление о публикации)

Если настроено уведомление (@Around), порядок выполнения уведомления по-прежнему заключается в том, чтобы сначала выполнить его предварительную обработку, затем выполнение целевого метода, затем другие уведомления (@AfterReturning, @AfterThrowing, @After) и, наконец, окружающие Постобработка уведомлений.