Compartilhamento de tecnologia

Armadilhas do SpringAOP

2024-07-08

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

Insira a descrição da imagem aqui
Vários tipos de notificação comuns e suas funções básicas no AOP:

  • @Before: Pré-notificação, executada antes da execução do método alvo.
  • @After: A pós-notificação, independentemente do resultado da execução do método (incluindo exceções), será executada após a execução do método de destino.
  • @AfterReturning: Notificação após retorno, executada após o método de destino terminar normalmente, mas não será executada se o método lançar uma exceção.
  • @AfterThrowing: Notificação de exceção, executada quando o método de destino lança uma exceção.
  • @Around: Notificação surround, você pode realizar operações personalizadas antes e depois da execução do método de destino e pode até decidir se deseja continuar executando o método de destino.

A diferença entre a ordem de execução AOP em Spring4 e Spring5

Ordem de execução AOP em Spring4

  • Sequência normal de execução:
    1. @Before (pré-notificação)
    2. execução do método alvo
    3. @Depois (postagem de notificação)
    4. @AfterReturning (notificação após retorno)
  • Sequência de execução de exceção:
    1. @Before (pré-notificação)
    2. Execução do método de destino (lança exceção)
    3. @Depois (postagem de notificação)
    4. @AfterThrowing (notificação de exceção)

Se a notificação surround (@Around) estiver configurada, o pré-processamento da notificação surround será executado antes de @Before, e o pós-processamento da notificação surround também será executado antes de @After, @AfterReturning e @AfterThrowing.

Ordem de execução AOP no Spring5

No Spring 5, a ordem de execução do AOP sofreu algumas alterações, refletidas principalmente na ordem de execução de @AfterReturning e @After:

  • Sequência normal de execução:
    1. @Before (pré-notificação)
    2. execução do método alvo
    3. @AfterReturning (notificação após retorno)
    4. @Depois (postagem de notificação)
  • Sequência de execução de exceção:
    1. @Before (pré-notificação)
    2. Execução do método de destino (lança exceção)
    3. @AfterThrowing (notificação de exceção)
    4. @Depois (postagem de notificação)

Se uma notificação de retorno (@Around) estiver configurada, a ordem de execução da notificação de retorno ainda será executar primeiro seu pré-processamento, depois a execução do método de destino, depois outras notificações (@AfterReturning, @AfterThrowing, @After) e, finalmente, o pós-processamento circundante de notificações.