Programación orientada a aspectos con spring
AOP - Introducción Aspectos
Un aspecto es la representación de una cuestión que afecta al sistema en forma transversal a la estructura de módulos del mismo (paquetes y clases).
Por ejemplo, un aspecto puede ser el control de acceso a los componentes de un sistema, afectando a múltiples clases.
El desarrollo orientado a aspectospermite aplicar sobre la estructura básica del sistema un conjunto de extensiones transversales, tanto de estado como de comportamiento, en forma dinámica.
AOP - Introducción Modularidad y Extensión
El concepto de punto de corte no es nuevo, pero el mecanismo de aplicación dinámica de extensiones mediante aspectos sí lo es.
Un aspecto encapsula una responsabilidad transversal a la estructurade módulos definida.
Incorpora una nueva forma de modularidad, extendiendo la programación orientada a objetos.
AOP - Introducción En otras palabras
“We present an analysis of why certain design decisions have been so difficult to clearly capture in actual code. We call the properties these decisions address aspects, and show that the reason they have been hard to capture is that theycross-cut the system’s basic functionality.”
“Presentamos un análisis de por qué ciertas decisiones de diseño han sido tan difíciles de capturar claramente en código. Llamamos a las propiedades de las que tratan esas decisiones aspectos, y mostramos que la razón por la que han sido difíciles de capturar es que son transversales a la funcionalidad básica del sistema.”
Gregor Kiczales et al,Aspect-Oriented Programming [Kiczales 97]
AOP - Introducción Ejemplos concretos
Auditar la ejecución de ciertas operaciones.
Generar alertas ante situaciones definidas.
Otorgar puntos al usuario por cada operación realizada sobre sistema.
Hacer observables un grupo de clases del sistema.
AOP - Introducción Terminología
La programación orientada a aspectos define unvocabulario propio a partir del cual construye los conceptos centrales y define los mecanismos de extensión.
AOP - Introducción Terminología
Aspecto (aspect)
Punto de unión (join point)
Punto de extensión (pointcut)
Comportamiento (advice)
Declaraciones inter-tipo (inter-type declarations)
Weaving
AOP - Introducción Aspecto
Unidad básica demodularidad transversal.
Análogo a una Clase, aunque con varias diferencias significativas.
Contiene puntos de extensión, avisos y declaraciones inter-tipo.
AOP - Introducción Punto de unión (JoinPoint)
Un punto bien definido en la ejecución de un programa.
Por ejemplo
La invocación a un método
La ejecución de un método
El lanzamiento de una excepción
AOP – Introducción Comportamiento(Advice)
Código a ejecutar en un punto de unión.
Extensión agregada a los módulos del sistema.
* Tipos
* Before
* After returning
* After throwing
* After (finally)
* Around
AOP – Introducción Punto de corte (Pointcut)
Predicado que identifica un conjunto de puntos de unión.
Expresión que describe el criterio para seleccionar puntos de unión.
En un aspecto, uncomportamiento (advice) está asociado a un punto de corte (pointcut) y es ejecutado en cualquier punto de unión (join point) perteneciente a ese punto de corte.
AOP – IntroduccióN Proxy
AOP Proxy:
Son los objetos creados por el framework de AOP para que cumplir con las reglas de AOP definidas.
Implementan los Advice definidos para los Join point correspondientes.
Spring AOP encapsula conestos objetos a los objetos de nuestro sistema interceptando la llamada a sus métodos y, de esta manera, ejecuta las acciones definidas por los Advice.
AOP – Introducción Implementaciones
Existen diferentes implementaciones
AspectJ (Implementación original de AOP)
* Spring AOP
* JBoss AOP
Difieren en sintaxis y semántica
AspectJ se presenta como un lenguaje extensión de Java y...
Regístrate para leer el documento completo.