Technologieaustausch

Fallstricke von SpringAOP

2024-07-08

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

Fügen Sie hier eine Bildbeschreibung ein
Mehrere gängige Benachrichtigungstypen und ihre Grundfunktionen in AOP:

  • @Before: Vorabbenachrichtigung, wird ausgeführt, bevor die Zielmethode ausgeführt wird.
  • @After: Die Postbenachrichtigung wird unabhängig vom Ergebnis der Methodenausführung (einschließlich Ausnahmen) ausgeführt, nachdem die Zielmethode ausgeführt wurde.
  • @AfterReturning: Benachrichtigung nach der Rückkehr, wird ausgeführt, nachdem die Zielmethode normal beendet wurde, wird jedoch nicht ausgeführt, wenn die Methode eine Ausnahme auslöst.
  • @AfterThrowing: Ausnahmebenachrichtigung, die ausgeführt wird, wenn die Zielmethode eine Ausnahme auslöst.
  • @Around: Mit der Surround-Benachrichtigung können Sie vor und nach der Ausführung der Zielmethode benutzerdefinierte Vorgänge ausführen und sogar entscheiden, ob die Zielmethode weiterhin ausgeführt werden soll.

Der Unterschied zwischen der AOP-Ausführungsreihenfolge in Spring4 und Spring5

AOP-Ausführungsreihenfolge in Spring4

  • Normale Ausführungssequenz:
    1. @Before (Vorabbenachrichtigung)
    2. Ausführung der Zielmethode
    3. @After (Post-Benachrichtigung)
    4. @AfterReturning (Benachrichtigung nach Rückkehr)
  • Ausnahmeausführungssequenz:
    1. @Before (Vorabbenachrichtigung)
    2. Ausführung der Zielmethode (wirft eine Ausnahme aus)
    3. @After (Post-Benachrichtigung)
    4. @AfterThrowing (Ausnahmebenachrichtigung)

Wenn die Surround-Benachrichtigung (@Around) konfiguriert ist, wird die Vorverarbeitung der Surround-Benachrichtigung vor @Before ausgeführt, und die Nachverarbeitung der Surround-Benachrichtigung wird auch vor @After, @AfterReturning und @AfterThrowing ausgeführt.

AOP-Ausführungsreihenfolge in Spring5

Im Frühjahr 5 hat die Ausführungsreihenfolge von AOP einige Änderungen erfahren, die sich hauptsächlich in der Ausführungsreihenfolge von @AfterReturning und @After widerspiegeln:

  • Normale Ausführungssequenz:
    1. @Before (Vorabbenachrichtigung)
    2. Ausführung der Zielmethode
    3. @AfterReturning (Benachrichtigung nach Rückkehr)
    4. @After (Post-Benachrichtigung)
  • Ausnahmeausführungssequenz:
    1. @Before (Vorabbenachrichtigung)
    2. Ausführung der Zielmethode (wirft eine Ausnahme aus)
    3. @AfterThrowing (Ausnahmebenachrichtigung)
    4. @After (Post-Benachrichtigung)

Wenn eine Around-Benachrichtigung (@Around) konfiguriert ist, besteht die Ausführungsreihenfolge der Around-Benachrichtigung immer noch darin, zuerst ihre Vorverarbeitung auszuführen, dann die Ausführung der Zielmethode, dann andere Benachrichtigungen (@AfterReturning, @AfterThrowing, @After) und schließlich die umliegende Nachbearbeitung von Meldungen.