Spring - Piazza

Anuncio
Spring
Desarrollo de Aplicaciones Empresariales
2014-1
Spring
• Spring
– Es un framework para el desarrollo de aplicaciones y un
contenedor de inversión de control, de código abierto para la
plataforma Java.
– Motivación: facilitar el desarrollo de aplicaciones Java EE,
promoviendo buenas prácticas de diseño y programación
• Simplifica el uso de muchas de las APIs de Java EE
• Dispone de alternativas a algunas de las APIs de Java EE
– Da soporte a:
• Dependency Injection
• Aspect-Oriented Programming including Spring's declarative
transaction management
• Spring MVC web application and RESTful web service framework
• Foundational support for JDBC, JPA, JMS
2
Inversion of Control
• IoC: Es una técnica que permite que a un objeto que
depende de otro, se le proporcione la instancia que
necesita en tiempo de ejecución
• Dependency Injection es un patrón que permite
lograr IoC
– http://martinfowler.com/articles/injection.html
• Los frameworks modernos como Spring soportan el
patrón Dependency Injection (DI)
3
Inversion of Control
• Bajo el paradigma de la inyección de dependencias,
existe un contenedor de objetos que crea los objetos
y les inyecta las referencias a los objetos de los que
dependen
– Ejemplo: cuando se crea una instancia de
EmployeeServiceImpl se le inyectan instancias de clases que
implementan EmployeeDAO y DepartmentDAO
– Spring incluye un contendor de objetos que da soporte al
paradigma de la inyección de dependencias
4
Ejercicios
1. Descargar e importar en eclipse el ejemplo springexamples
2. Ejecutar SpringExample.java
3. Configurar spring-module.xml de tal modo que
se.exampleSpring() utilice el DBNewsService.java
–
No se puede modificar código Java en este ejercicio
4. Definir un nuevo servicio TXTNewsService.java que lea
las noticias de un fichero de texto
–
Cada línea en el fichero será una noticia
–
El path al fichero de texto se debe proporcionar en springmodule.xml
5
Gestión de transacciones
• Los DAOs no se tienen que preocupar del manejo de
la conexión. Sin la gestión de transacciones de Spring:
– En la implementación de cada método, necesitaríamos
rodear la lógica de negocio con código para gestionar la
transacción.
• El código sería más ilegible
• Ese código es necesario, pero colateral a la lógica de negocio
que debe implementar ese método
• Hay que repetirlo en todos los métodos de todos los servicios
• Este tipo de código representa un cross-cutting concern
(preocupación transversal como seguridad, log, etc.)
6
Gestión de transacciones
• Programación Orientada a Aspectos (AOP)
– Técnica que permite eliminar los cross-cutting concerns del código,
encapsulando cada uno en un aspecto
– Con un framework AOP
• El desarrollador implementa los aspectos y declara en qué puntos de
ejecución se deben aplicar
• El framework intercepta los puntos de ejecución y aplica los aspectos
automáticamente
– Spring utiliza esta técnica para la gestión declarativa de transacciones
• Incluye una implementación del aspecto de transaccionalidad, que hace
uso de un gestor de transacciones
– El gestor permite agrupar invocaciones a DAOs en una misma
transacción
• El desarrollador de un servicio declara la transaccionalidad de cada método
– Spring intercepta las invocaciones a los métodos y aplica el
aspecto de transaccionalidad
7
Gestión de transacciones
• En jdbc-example no hacemos uso de este mecanismo
declarativo
• Si implementamos varios casos de uso en nuestros
servicios veremos que todos tienen una gestión de
transacciones similar
– Iniciar la transacción (con las propiedades adecuadas) a partir del
gestor de transacciones utilizado
– Ejecutar la lógica propia del caso de uso
– Finalizar transacción (commit o rollback) en función de si se ha
producido alguna excepción o no y de su tipo
– El código común para la gestión de las transacciones puede
eliminarse de la implementación de todos los casos de uso que lo
precisen, y declarativamente decir cuándo debe ejecutarse
8
Ejercicios
1. Explorar el uso de la anotación @Transactional para
hacer una gestión declarativa de las transacciones
–
Más información de cómo hacerlo en lecturas
recomendadas: Spring_en_Modelo.pdf
•
Diapositivas 37 a 57
2. Implemente el siguiente caso de uso transaccional
(empleando alguno de los mecanismos que conoce)
sobre el código de jdbc-examples: “Debe ser posible
incrementar en un determinado porcentaje el salario
de todos los empleados que trabajan en una
localidad determinada”
9
Descargar