Ejercicios de AOP en Spring
Continuamos en esta sesión con la aplicación AmigosSpring, añadiéndole ahora aspectos para poder realizar diversas tareas
Añadir el siguiente bean al mvc.xml para gestionar el proceso de registro:
<bean name="/registroUsuario.mvc" class="es.ua.jtech.amigosSpring.mvc.RegistroUsuarioController"> <property name="fachada"> <ref bean="fachada"/> </property> <property name="validator"> <bean class="es.ua.jtech.amigosSpring.mvc.NuevoUsuarioValidator"/> </property> </bean>
Añadir al mensajes.properties los siguientes mensajes de error:
campoVacio = el campo no puede estar vacío passwdDif = los passwords deben coincidir
Instalación del plugin de AspectJ
El plugin de eclipse para AspectJ nos ayudará a chequear la sintaxis de los puntos de corte y de los aspectos. Podemos instalarlo de dos formas:
- A través de la red: con la opción de Eclipse Help > Software updates > Find and install. Elegimos "Search new features to install" y como "New remote site" ponemos http://download.eclipse.org/tools/ajdt/32/update
- Directamente descomprimiendo este zip en la carpeta de Eclipse. Para asegurarse de que instala los nuevos plugins, arrancar el eclipse desde una terminal tecleando eclipse -clean, NO haciendo doble clic sobre él.
Registro de eventos con AOP
El administrador del sistema quiere recibir un mail cuando se produzcan ciertos eventos:
- alguna excepción de tipo SinPermisoException en alguna clase de la capa de negocio o de datos. El mail debe contener el mensaje de error de la excepción generada.
- Registro de un nuevo usuario. Mensaje conteniendo el login, nombre y edad
Evidentemente no es necesario que se mande un mail de verdad, ya que todavía no hemos visto el API en el curso. Bastará con que se muestre un mensaje en pantalla indicando "mail generado con texto:...."
Cache con AOP (*)
Se ha introducido en el sitio web una funcionalidad en la cual aparecen viajes de oferta en las páginas del sitio. Dicha funcionalidad la gestionan las clases OfertasDAO y GestorOfertas a nivel de datos y negocio, respectivamente. Las ofertas no suelen cambiar en tiempo real, sino un par de veces a la semana, por lo que son buen candidato para guardar en cache y evitar solicitudes innecesarias a la base de datos. Añadir AOP al método getOfertasActuales() para que si las que hay tienen una antigüedad de menos de 30 minutos, no se tomen de la base de datos, sino de una cache.