Varios tipos de notificaciones comunes y sus funciones básicas en AOP:
@Before: notificación previa, ejecutada antes de que se ejecute el método de destino.
@After: la notificación posterior, independientemente del resultado de la ejecución del método (incluidas las excepciones), se ejecutará después de que se ejecute el método de destino.
@AfterReturning: notificación después del retorno, ejecutada después de que el método de destino finaliza normalmente, pero no se ejecutará si el método genera una excepción.
@AfterThrowing: notificación de excepción, ejecutada cuando el método de destino genera una excepción.
@Around: notificación envolvente, puede realizar operaciones personalizadas antes y después de que se ejecute el método de destino, e incluso puede decidir si continuar ejecutando el método de destino.
La diferencia entre el orden de ejecución de AOP en Spring4 y Spring5
Orden de ejecución de AOP en Spring4
Secuencia de ejecución normal:
@Antes (notificación previa)
ejecución del método de destino
@Después (notificación posterior)
@AfterReturning (notificación después de la devolución)
Secuencia de ejecución de excepciones:
@Antes (notificación previa)
Ejecución del método de destino (lanza excepción)
@Después (notificación posterior)
@AfterThrowing (notificación de excepción)
Si se configura la notificación envolvente (@Around), el preprocesamiento de la notificación envolvente se ejecutará antes de @Before, y el posprocesamiento de la notificación envolvente también se ejecutará antes de @After, @AfterReturning y @AfterThrowing.
Orden de ejecución de AOP en Spring5
En Spring 5, el orden de ejecución de AOP ha sufrido algunos cambios, que se reflejan principalmente en el orden de ejecución de @AfterReturning y @After:
Secuencia de ejecución normal:
@Antes (notificación previa)
ejecución del método de destino
@AfterReturning (notificación después de la devolución)
@Después (notificación posterior)
Secuencia de ejecución de excepciones:
@Antes (notificación previa)
Ejecución del método de destino (lanza excepción)
@AfterThrowing (notificación de excepción)
@Después (notificación posterior)
Si se configura una notificación circular (@Around), el orden de ejecución de la notificación circular sigue siendo ejecutar su preprocesamiento primero, luego la ejecución del método de destino, luego otras notificaciones (@AfterReturning, @AfterThrowing, @After) y finalmente el entorno Postprocesamiento de notificaciones.