[Cursos]:Aprendamos: Spring AOP (I)

nov. 28, 2009Escrito por Mario  Arias

 

Requisitos

Para empezar este curso, necesitamos:

  • Conocimientos:
    • Conocimientos de Java
    • Conocimientos intermedios de programación orientada objetos
    • Conocimientos intermedios prácticos de Spring Framework
  • Software:
    • JDK 1.5 o superios
    • Spring Framework 2.5.6

¿Que es AOP?

AOP nacio para solucionar un problema con el que se enfrentan los desarrolladores de software, y es que muchas veces, se termina mezclando código de la aplicación (lógica de negocios, presentación) con código que no tiene que ver específicamente con la aplicación (Transacciones, Logueo, Seguridad, Cache)

Este problema se manifiesta con dos síntomas:

  • Mezcla de conceptos:La mezcla de conceptos se da cuando en un mismo método, se tiene código de la aplicación, y código que no es de la aplicación. Recordemos que en OOP se debe practicar el principio de responsabilidad simple (cada componente debe tener una responsabilidad unica y especifica), es decir que si un componente de la aplicación esta encargado de procesar las facturas, no deberían tener código para manejo de seguridad, ni de transacciones
    public void crearFactura(Cliente cliente){
      //código de seguridad
      if(!usuario.tienePermiso()){
        throw new AccessDeniedException("El usuario no tiene permiso");
      }
      //código de aplicación
      //crear una factura para el cliente etc...
    }
            
    Como vemos en este ejemplo, en las primeras lineas del método, se esta preguntando si el usuario tiene permisos, si no se lanza una Exception. En este caso estamos violando el principio de responsabilidad simple, ya que tenemos código de seguridad y código de aplicación, en el mismo método.
  • Duplicación de código:Si tenemos el primer síntoma, seguramente empezaremos a padecer de este, si en cada método, debemos manejar permisos, probablemente, vamos a ver las mismas lineas de código en cada método.
    public void crearFactura(Cliente cliente){
      //código de seguridad
      if(!usuario.tienePermiso()){
        throw new AccessDeniedException("El usuario no tiene permiso");
      }
      //código de aplicación
      //crear una factura para el cliente etc...
    }
    
    public void modificarFactura(Cliente cliente){
      //código de seguridad
      if(!usuario.tienePermiso()){
        throw new AccessDeniedException("El usuario no tiene permiso");
      }
      //código de aplicación
      //modifica una factura para el cliente etc...
    }
            
    En este caso son solo dos métodos pero podrían repetirse, por toda la clase y aun en varias clases.

Así como en OOP tenemos ciertos conceptos teóricos que debemos tener claros para poder entender el paradigma, lo mismo ocurre con AOP, algunos de estos conceptos son:

  • Join Point:Un punto de ejecución de un programa como un llamada a un método
  • Pointcut:Una expresión que define uno o varios Join Points
  • Advice:Código para ser ejecutado en en un Join Point que ha sido definido por un Pointcut (en nuestro ejemplo el código para manejar permisos)
  • Aspecto:Modulo que encapsula pointcuts y advices

Suficiente por hoy; en la próxima sesión veremos un ejemplo practico para ver como se aplican los conceptos que hemos a prendido.

Comentarios

marzo 18, 2010 Por :Luigi Builder

Muy interesante el curso, no se si pudiesen colocar un ejemplo de AOP para transacciones. Gracias.

Dejenos su comentario

Los comentarios en las entradas están para enriquecer el contenido y/o hacer preguntas pertinentes, se supone que estamos entre profesionales o personas que están preparandose para serlo

Por lo tanto se borraran sin contemplación:

  • Comentarios xenofobicos de cualquier tipo
  • Comentarios políticos
  • Spam y/o publicidad

Gracias por sus comentarios