Несколько распространенных типов уведомлений и их основные функции в АОП:
@Before: предварительное уведомление, выполняемое до выполнения целевого метода.
@After: почтовое уведомление, независимо от результата выполнения метода (включая исключения), будет выполнено после выполнения целевого метода.
@AfterReturning: уведомление после возврата, выполняется после нормального завершения целевого метода, но не будет выполнено, если метод выдает исключение.
@AfterThrowing: уведомление об исключении, выполняемое, когда целевой метод генерирует исключение.
@Around: объемное уведомление, вы можете выполнять настраиваемые операции до и после выполнения целевого метода и даже решить, продолжать ли выполнение целевого метода.
Разница между порядком выполнения АОП в Spring4 и Spring5
Порядок выполнения АОП в Spring4
Обычная последовательность выполнения:
@Before (предварительное уведомление)
выполнение целевого метода
@After (уведомление о публикации)
@AfterReturning (уведомление после возвращения)
Последовательность выполнения исключения:
@Before (предварительное уведомление)
Выполнение целевого метода (выдает исключение)
@After (уведомление о публикации)
@AfterThrowing (уведомление об исключении)
Если настроено уведомление о объемном звучании (@Around), предварительная обработка уведомления о объемном звучании будет выполняться перед @Before, а постобработка уведомления о объемном звучании также будет выполняться перед @After, @AfterReturning и @AfterThrowing.
Порядок выполнения АОП в Spring5
В Spring 5 порядок выполнения АОП претерпел некоторые изменения, в основном отраженные в порядке выполнения @AfterReturning и @After:
Обычная последовательность выполнения:
@Before (предварительное уведомление)
выполнение целевого метода
@AfterReturning (уведомление после возвращения)
@After (уведомление о публикации)
Последовательность выполнения исключения:
@Before (предварительное уведомление)
Выполнение целевого метода (выдает исключение)
@AfterThrowing (уведомление об исключении)
@After (уведомление о публикации)
Если настроено уведомление (@Around), порядок выполнения уведомления по-прежнему заключается в том, чтобы сначала выполнить его предварительную обработку, затем выполнение целевого метода, затем другие уведомления (@AfterReturning, @AfterThrowing, @After) и, наконец, окружающие Постобработка уведомлений.