- ¿Qué es AOP?
- ¿Dónde utilizar AOP?
- Conceptos y terminología de AOP
- Implementación de AOP de primavera
Programación Orientada a Aspectos (AOP) complementa a los OOP en el sentido de que también proporciona modularidad. Pero la unidad clave de la modularidad es el aspecto más que la clase.
AOP divide la lógica del programa en partes distintas (llamadas preocupaciones). Se utiliza para aumentar la modularidad preocupaciones transversales .
A preocupación transversal Es una preocupación que puede afectar a toda la aplicación y debe centralizarse en una ubicación en el código posible, como gestión de transacciones, autenticación, registro, seguridad, etc.
¿Por qué utilizar AOP?
Proporciona una forma conectable de agregar dinámicamente preocupaciones adicionales antes, después o alrededor de la lógica real. Supongamos que hay 10 métodos en una clase como se indica 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(){...} }
Hay 5 métodos que comienzan desde m, 2 métodos que comienzan desde n y 3 métodos que comienzan desde p.
Entendiendo el escenario Tengo que mantener el registro y enviar notificaciones después de llamar a métodos que comienzan desde m.
Problema sin AOP Podemos llamar a métodos (que mantienen el registro y envían notificaciones) desde los métodos que comienzan con m. En tal escenario, necesitamos escribir el código en los 5 métodos.
Pero, si el cliente dice que en el futuro no tengo que enviar una notificación, debe cambiar todos los métodos. Conduce al problema de mantenimiento.
Solución con AOP No tenemos que llamar a métodos desde el método. Ahora podemos definir preocupaciones adicionales como mantener el registro, enviar notificaciones, etc. en el método de una clase. Su entrada se proporciona en el archivo xml.
En el futuro, si el cliente indica que eliminemos la funcionalidad del notificador, solo necesitaremos cambiarla en el archivo xml. Por tanto, el mantenimiento es sencillo en AOP.
delimitador de java
¿Dónde utilizar AOP?
AOP se utiliza principalmente en los siguientes casos:
- para proporcionar servicios empresariales declarativos, como la gestión de transacciones declarativas.
- Permite a los usuarios implementar aspectos personalizados.
Conceptos y terminología de AOP
Los conceptos y terminologías de AOP son los siguientes:
- Punto de unión
- Consejo
- corte puntual
- Introducción
- Objeto de destino
- Aspecto
- Interceptador
- Proxy AOP
- Costura
Punto de unión
El punto de unión es cualquier punto de su programa, como la ejecución de métodos, el manejo de excepciones, el acceso a campos, etc. Spring solo admite el punto de unión de ejecución de métodos.
Consejo
El consejo representa una acción realizada por un aspecto en un punto de unión particular. Hay diferentes tipos de consejos:
- Antes del consejo : se ejecuta antes de un punto de unión.
- Después de devolver el consejo : se ejecuta después de que un punto conjunto se completa normalmente.
- Después de lanzar consejos : se ejecuta si el método sale lanzando una excepción.
- Después (finalmente) del consejo : se ejecuta después de un punto de unión independientemente de la salida del punto de unión, ya sea un retorno normal o excepcional.
- Alrededor de consejos : Se ejecuta antes y después de un punto de unión.
corte puntual
Es un lenguaje de expresión de AOP que coincide con puntos de unión.
Introducción
Significa la introducción de métodos y campos adicionales para un tipo. Le permite introducir una nueva interfaz a cualquier objeto recomendado.
Objeto de destino
Es el objeto, es decir, ser aconsejado por uno o más aspectos. También se le conoce como objeto proxy en Spring porque Spring AOP se implementa mediante servidores proxy en tiempo de ejecución.
Aspecto
Es una clase que contiene consejos, puntos de unión, etc.
Interceptador
Es un aspecto que contiene sólo un consejo.
Proxy AOP
Se utiliza para implementar contratos de aspectos, creados por el marco AOP. Será un proxy dinámico JDK o un proxy CGLIB en Spring Framework.
Costura
Es el proceso de vincular aspectos con otros tipos de aplicaciones u objetos para crear un objeto recomendado. El tejido se puede realizar en tiempo de compilación, tiempo de carga o tiempo de ejecución. Spring AOP realiza tejido en tiempo de ejecución.
char en cadena java
Implementaciones de POA
Las implementaciones de AOP son proporcionadas por:
- AspectoJ
- AOP de primavera
- JBossAOP
AOP de primavera
Spring AOP se puede utilizar de las tres formas que se indican a continuación. Pero el enfoque más utilizado es el estilo de anotación Spring AspectJ. Las 3 formas de utilizar Spring AOP se detallan a continuación:
- Por Spring1.2 Estilo antiguo (basado en dtd) (también compatible con Spring3)
- Por estilo de anotación AspectJ
- Por estilo de configuración Spring XML (basado en esquemas)
Enlaces de referencia
Fuente de primavera AOPAPI AOP de origen de primavera
Wikipedia