Partage de technologie

Les pièges de SpringAOP

2024-07-08

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

Insérer la description de l'image ici
Plusieurs types de notifications courants et leurs fonctions de base dans AOP :

  • @Before : pré-notification, exécutée avant l'exécution de la méthode cible.
  • @After : la notification de publication, quel que soit le résultat de l'exécution de la méthode (y compris les exceptions), sera exécutée après l'exécution de la méthode cible.
  • @AfterReturning : notification après retour, exécutée après la fin normale de la méthode cible, mais ne sera pas exécutée si la méthode lève une exception.
  • @AfterThrowing : notification d'exception, exécutée lorsque la méthode cible lève une exception.
  • @Around : notification Surround, vous pouvez effectuer des opérations personnalisées avant et après l'exécution de la méthode cible, et vous pouvez même décider de continuer à exécuter la méthode cible.

La différence entre l'ordre d'exécution AOP dans Spring4 et Spring5

Ordre d'exécution AOP dans Spring4

  • Séquence d'exécution normale :
    1. @Avant (pré-notification)
    2. exécution de la méthode cible
    3. @After (post-notification)
    4. @AfterReturning (notification après retour)
  • Séquence d'exécution des exceptions :
    1. @Avant (pré-notification)
    2. Exécution de la méthode cible (lève une exception)
    3. @After (post-notification)
    4. @AfterThrowing (notification d'exception)

Si la notification surround (@Around) est configurée, le prétraitement de la notification surround sera exécuté avant @Before, et le post-traitement de la notification surround sera également exécuté avant @After, @AfterReturning et @AfterThrowing.

Ordre d'exécution AOP dans Spring5

Au printemps 5, l'ordre d'exécution d'AOP a subi quelques changements, principalement reflétés dans l'ordre d'exécution de @AfterReturning et @After :

  • Séquence d'exécution normale :
    1. @Avant (pré-notification)
    2. exécution de la méthode cible
    3. @AfterReturning (notification après retour)
    4. @After (post-notification)
  • Séquence d'exécution des exceptions :
    1. @Avant (pré-notification)
    2. Exécution de la méthode cible (lève une exception)
    3. @AfterThrowing (notification d'exception)
    4. @After (post-notification)

Si une notification autour (@Around) est configurée, l'ordre d'exécution de la notification autour est toujours d'exécuter son prétraitement en premier, puis l'exécution de la méthode cible, puis les autres notifications (@AfterReturning, @AfterThrowing, @After), et enfin le post-traitement environnant des notifications.