English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

AOP de Spring

Programación Orientada a Aspectos(AOP) en cierto sentido es un complemento de OOP, ya que también proporciona funcionalidades modulares. Sin embargo, la unidad clave de modularidad es el aspecto en lugar de la clase.

AOP divide la lógica del programa en diferentes partes (llamadas puntos de interés). Se utiliza para Interés interdisciplinariopara mejorar la modularidad.

cross-cutting concernsEs un punto de interés que afecta toda la aplicación y debe estar tan concentrado como sea posible en el código de una ubicación, como gestión de transacciones, autenticación, registro, seguridad, etc.


¿Por qué usar AOP?

Proporciona una forma plugable para agregar puntos de interés adicionales dinámicamente antes, después o alrededor de la lógica real. Supongamos que en una clase hay10Métodos, como se muestra a continuación:

class A{
public void m1(){...}
public void m2(){...}
public void m3(){...}
public void m4(){...}
public void m5(){...}
public void n1(){...}
public void n2(){...}
public void p1(){...}
public void p2(){...}
public void p3(){...}
}

Que comienza con m5Este método, que comienza con n2Este método, que comienza con p3Este método.

Entender la situaciónDebo mantener el registro y enviar

Problemas sin AOPPodemos llamar a métodos desde métodos que comiencen con m (mantenimiento de registro y envío de notificaciones). En este caso, necesitamos usar todos5Este método escribe código.

Pero, si el cliente dice en el futuro que no necesito enviar notificaciones,则需要更改所有方法。这将 causar problemas de mantenimiento.

Solución de AOPNo tenemos que llamar a métodos desde métodos. Ahora, podemos definir otros puntos de interés en los métodos de la clase, como mantenimiento de registro, envío de notificaciones, etc. Sus entradas se dan en el archivo xml.

En el futuro, si el cliente dice que desea eliminar la función de notificación, solo necesitamos realizar cambios en el archivo xml. Por lo tanto, es fácil mantener AOP.

¿Dónde se utiliza AOP?

AOP se utiliza principalmente en las siguientes situaciones:

Proporciona servicios empresariales declarativos, como gestión de transacciones declarativa. Permite a los usuarios implementar aspectos personalizados.

Conceptos y términos de AOP

Los conceptos y términos de AOP son los siguientes:

Join point Advice Pointcut Introducción Objeto de destino Aspecto Interceptor Proxy AOP Hilatura

Join point

Join point es cualquier punto en el programa, por ejemplo, ejecución de métodos, manejo de excepciones, acceso a campos, etc. Spring solo admite Join point de ejecución de métodos.

Advice

El Advice representa las operaciones que la aspect toma en un Join point específico. Hay diferentes tipos de Advice:

Consejo de Antes Advice: Se ejecuta antes del Join point. Consejo de Después de Devolver Advice: Se ejecuta después de que el Join point se complete normalmente. Consejo de Después de Trazar Advice: Si el método sale debido a una excepción, se ejecutará. Consejo de Después (finalmente) Advice: Independientemente de si el Join point sale de forma normal o con excepción, se ejecutará después del Join point. Consejo de alrededor de Advice: Se ejecuta antes y después del Join point.

Pointcut

Es un lenguaje de expresión de AOP, que coincide con el Join point.

Introducción

Esto significa otros métodos y campos del tipo de introducción. Permite que introduzca nuevas interfaces en cualquier objeto de consejo.

Objeto de destino

Este es un objeto de consejos de uno o más aspectos. En Spring, también se llama objeto proxy, porque Spring AOP se implementa mediante proxy en tiempo de ejecución.

Aspecto

Este es una clase que contiene consejos, puntos de unión, etc.

Interceptor

Este es un aspecto que contiene solo un consejo.

Proxy AOP

Se utiliza para implementar el contrato de aspecto creado por el framework AOP. En el marco de Spring, será el proxy dinámico de JDK o el proxy CGLIB.

Hilatura

Este es el proceso de enlazar aspectos con otros tipos de aplicaciones o objetos para crear objetos de consejos. La hilatura se puede completar en tiempo de compilación, tiempo de carga o tiempo de ejecución. Spring AOP realiza la hilatura en tiempo de ejecución.

Implementación de AOP

La implementación de AOP se proporciona por:

AspectJ SpringAOP JBoss AOP

AOP de Spring

Spring AOP se puede usar de las siguientes tres maneras. Sin embargo, el método más utilizado es el estilo de anotaciones de AspectJ de Spring. A continuación se muestra el uso de Spring AOP.3Métodos:

Adoptando Spring1.2Estilo antiguo (basado en dtd) (en Spring)3(también se admite en) Configuración de estilo a través de anotaciones de AspectJ Configuración de estilo a través de Spring XML (basado en patrones)