Your SlideShare is downloading. ×
Introducción a Spring Roo
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Introducción a Spring Roo

1,084
views

Published on

Presentación utilizada para la charla: …

Presentación utilizada para la charla:
Introducción a Spring Roo - Desarrollo Java EE altamente productivo.

Noviembre 2011.

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,084
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Introducción a Spring RooDesarrollo Java EE altamente productivo Your Name Line 1 of Your Affiliation ISC – Noviembre 2011 Line 2 of Your Affiliation Paulo Clavijo Esteban clavijo_pau@ingenieriadesoftware.com 1
  • 2. Agenda Introducción a Spring Roo Objetivo Principal ¿Qué es Spring Roo? Spring Roo CLI Generando una aplicación de ejemplo. Tecnologías y Arquitectura Núcleo y Add-ons. Demo – Aplicación Reserva Libros ISC - 2011 Paulo Clavijo Esteban clavijo_pau@ingenieriadesoftware.com 2
  • 3. Objetivo Principal “El objetivo principal de Spring ROO es mejorar la productividad de los desarrollos Java sin comprometer la integridad y flexibilidad del sistema” ISC - 2011 Paulo Clavijo Esteban clavijo_pau@ingenieriadesoftware.com 3
  • 4. ¿Qué es Spring Roo? Ben Alex: “Roo es un pequeño genio que observa desde un segundo plano y gestiona todo aquello de lo que no me quiero preocupar” ISC - 2011 Paulo Clavijo Esteban clavijo_pau@ingenieriadesoftware.com 4
  • 5. ¿Qué es Spring Roo? Spring Roo es una herramienta de desarrollo rápido de aplicaciones o RAD, que permite el desarrollo de aplicaciones Java EE de forma muy productiva y cómoda para el desarrollador. Las aplicaciones resultantes utilizan tecnologías Java conocidas como Spring Framework, Java Persistence API, Java Server Pages, Apache Maven, AspectJ, etc. ISC - 2011 Paulo Clavijo Esteban clavijo_pau@ingenieriadesoftware.com 5
  • 6. Características principales (1/3) Generación de código (activa y pasiva) para aplicaciones Java con Spring. Elimina el trabajo tedioso centrando el desarrollo en la lógica de negocio. Paradigma CoC (Convención sobre configuración). Enfoque DDD (Domain-Driven Development). Dirigido por el modelo de entidades. Lógica en las entidades (Real Object Oriented), elimina capas redundantes. Rich Domain Model (RDM) en oposición al anti-patrón Anemic Domain Model (ADM). ISC - 2011 Paulo Clavijo Esteban clavijo_pau@ingenieriadesoftware.com 6
  • 7. Arquitectura DDD ISC - 2011 Paulo Clavijo Esteban clavijo_pau@ingenieriadesoftware.com 7
  • 8. Características principales (2/3) Crea un proyecto en segundos. Realimentación: añade valor durante todo el ciclo de vida. Las aplicaciones siguen las mejores prácticas de diseño. Permite auto-generar test unitarios y de integración. No incorpora elementos adicionales al entorno de ejecución, por lo que no penaliza la velocidad la aplicación. No requiere ningún IDE. Recibe instrucciones a través de una consola interactiva con auto-completado y ayuda en línea. ISC - 2011 Paulo Clavijo Esteban clavijo_pau@ingenieriadesoftware.com 8
  • 9. Características principales (3/3) Extensible usando bundles OSGi. Aprovecha el conocimiento: no necesita más conocimiento que el necesario para el desarrollo de aplicaciones J2EE. Podemos eliminar Roo de un proyecto en minutos. ISC - 2011 Paulo Clavijo Esteban clavijo_pau@ingenieriadesoftware.com 9
  • 10. Spring Roo CLI Spring Roo es una herramienta de Linea de Comandos (CLI). De fácil uso, proporciona auto-completado “TAB” de comandos y argumentos, y ayuda en linea mediante el comando help y hint. Se puede integrar con IDEs como STS o Eclipse ISC - 2011 Paulo Clavijo Esteban clavijo_pau@ingenieriadesoftware.com 10
  • 11. Generando una aplicación en minutos Demo 1 – Aplicación Inventarioroo> project ­­topLevelPackage com.curso.inventarioroo> jpa setup ­­provider HIBERNATE ­­database HYPERSONIC_IN_MEMORYroo> entity ­­class ~.domain.Producto ­­testAutomaticallyroo> field number ­­fieldName idProducto ­­type int ­­notNullroo> field string ­­fieldName nombre ­­notNullroo> field string ­­fieldName descripcionroo> field number ­­fieldName precio ­­type doubleroo> web mvc setuproo> web mvc all ­­package ~.webroo> perform tests ISC - 2011 Paulo Clavijo Esteban clavijo_pau@ingenieriadesoftware.com 11
  • 12. Generando una aplicación ISC - 2011 Paulo Clavijo Esteban clavijo_pau@ingenieriadesoftware.com 12
  • 13. Utilizando Eclipse IDE Si se utiliza Eclipse IDE y no SpringSource Tool Suite (STS). Instalar plugin m2eclipse (Indigo lo trae de serie). Instalar plugin AJDT (AspectJ Development Tools) Activar JDT Weaving: Window > Preferences > JDT Weaving Configurar refresco automático: Preferences > General > Workspace > Refresh using native hooks or polling ISC - 2011 Paulo Clavijo Esteban clavijo_pau@ingenieriadesoftware.com 13
  • 14. Código Java generado Roo genera código que podemos dividir en dos categorías: Código gestionado por Spring Roo. Ficheros AspectJ ITD (extensión .aj) Código gestionado por el programador. Fuentes Java En tiempo de compilación, el código en los ficheros .aj, es tejido (weaved) en el código de los fuentes Java. ISC - 2011 Paulo Clavijo Esteban clavijo_pau@ingenieriadesoftware.com 14
  • 15. Infraestructura Roo ISC - 2011 Paulo Clavijo Esteban clavijo_pau@ingenieriadesoftware.com 15
  • 16. Demo 2 – Aplicación Reserva de Libros (1/9) Requerimientos La aplicación debe permitir administrar las entidades Libro, TipoLibro, Autor y Reserva. Así como la búsqueda de Libro por ISBN o titulo. Seguridad Las páginas de gestión de Libro, TipoLibro y Autor son accesible a usuarios del rol ROLE_ADMIN La página de gestión de Reserva es accesible para usuarios del rol ROLE_USER Pruebas Test de integración de las entidades Test automáticos de la capa Web con Selenium ISC - 2011 Paulo Clavijo Esteban clavijo_pau@ingenieriadesoftware.com 16
  • 17. Demo 2 – Aplicación Reserva de Libros (2/9) Modelo de Dominio Relación One-to-one entre las entidades Libro y TipoLibro Relación Many-to-one entre las entidades Reserva y Libro Relación Many-to-Many entre las entidades Libro y Autor ISC - 2011 Paulo Clavijo Esteban clavijo_pau@ingenieriadesoftware.com 17
  • 18. Demo 2 – Aplicación Reserva de Libros (3/9)roo> project ­­topLevelPackage com.curso.reservaroo> jpa setup ­­provider HIBERNATE ­­database HYPERSONIC_IN_MEMORY// Definición de las entidadesroo> entity ­­class ~.domain.TipoLibro ­­testAutomaticallyfield string ­­fieldName nombre ­­notNull ­­sizeMin 3 ­­sizeMax 20field string ­­fieldName descripcionroo> entity ­­class ~.domain.Autor ­­testAutomaticallyfield string ­­fieldName nombre ­­notNullfield string ­­fieldName biografiaroo> enum type ­­class ~.reference.FormatoLibroenum constant ­­name papelenum constant ­­name digital ISC - 2011 Paulo Clavijo Esteban clavijo_pau@ingenieriadesoftware.com 18
  • 19. Demo 2 – Aplicación Reserva de Libros (4/9)roo> entity ­­class ~.domain.Reserva ­­testAutomatically roo> field string ­­fieldName nombre ­­notNull roo> field string ­­fieldName email ­­notNullroo> entity ­­class ~.domain.Libro ­­testAutomatically roo> field string ­­fieldName isbn ­­notNull ­­sizeMin 10 ­­sizeMax 13roo> field string ­­fieldName titulo ­­notNullroo> field string ­­fieldName resumen ­­sizeMax 250roo> field date ­­fieldName fechaPublicacion ­­type java.util.Dateroo> field number ­­fieldName numeroPaginas ­­type introo> field enum ­­fieldName formato ­­type ~.reference.FormatoLibro ­­notNull ISC - 2011 Paulo Clavijo Esteban clavijo_pau@ingenieriadesoftware.com 19
  • 20. Demo 2 – Aplicación Reserva de Libros (5/9)//Relación Uno a unoroo> field reference ­­fieldName tipo ­­type ~.domain.TipoLibro ­­notNull ­­class ~.domain.Libro//Relación Uno a muchosroo> field reference ­­fieldName libro ­­type ~.domain.Libro ­­class ~.domain.Reservaroo> field set ­­fieldName reservas ­­type ~.domain.Reserva ­­mappedBy libro ­­notNull false ­­cardinality ONE_TO_MANY  ­­class ~.domain.Libro//Relación Muchos a muchosroo> field set ­­fieldName autores ­­type ~.domain.Autor ­­class ~.domain.Libroroo> field set ­­fieldName libros ­­type ~.domain.Libro ­­mappedBy autores ­­notNull false ­­cardinality MANY_TO_MANY ­­class ~.domain.Autor ISC - 2011 Paulo Clavijo Esteban clavijo_pau@ingenieriadesoftware.com 20
  • 21. Demo 2 – Aplicación Reserva de Libros (6/9)// Scaffolding automático de la capa webroo> web mvc setuproo> web mvc all ­­package ~.webroo> web mvc language ­­code es//Buscadoresroo> finder add ­­finderName findLibroesByIsbn ­­class ~.domain.Libroroo> finder add ­­finderName findLibroesByTitulo ­­class ~.domain.Libroroo> web mvc finder all// Ajuste del nivel de logroo> logging setup ­­level INFOroo> perform testsroo> perform eclipse ISC - 2011 Paulo Clavijo Esteban clavijo_pau@ingenieriadesoftware.com 21
  • 22. Demo 2 – Aplicación Reserva de Libros (7/9) ISC - 2011 Paulo Clavijo Esteban clavijo_pau@ingenieriadesoftware.com 22
  • 23. Demo 2 – Aplicación Reserva de Libros (8/9) Añadiendo seguridad El comando security setup añade Spring Security a la aplicación. Para ello: Crea el fichero applicationContext-security.xml con la configuración de Spring Security. Crea la vista login.jspx para la página de login. Actualiza el fichero web.xml para utilizar el filtro Spring Security para controlar el acceso a los recursos securizados. Actualiza pom.xml para añadir las dependencias de Spring Security. ISC - 2011 Paulo Clavijo Esteban clavijo_pau@ingenieriadesoftware.com 23
  • 24. Demo 2 – Aplicación Reserva de Libros (9/9) Añadiendo seguridad applicationContext-security.xml        <intercept­url pattern="/autors/**" access="hasRole(ROLE_ADMIN)"/>        <intercept­url pattern="/libroes/**" access="hasRole(ROLE_ADMIN)"/>        <intercept­url pattern="/tipolibroes/**" access="hasRole(ROLE_ADMIN)"/>        <intercept­url pattern="/reservas/**" access="hasRole(ROLE_USER)"/>        <intercept­url pattern="/**" access="permitAll" /> ISC - 2011 Paulo Clavijo Esteban clavijo_pau@ingenieriadesoftware.com 24
  • 25. Novedades Spring Roo 1.2 Spring Roo ha tomado un enfoque práctico para reducir la complejidad, a menudo innecesaria, de las capa de servicio, repositorio o DAO. La nueva versión de Spring Roo 1.2.0.M1 incluye mayor soporte para capas de arquitectura. Pudiendo configurarlas a medida a las necesidades de la aplicación. 1.2.0.RC1 soportara proyectos Maven multi modulo. ISC - 2011 Paulo Clavijo Esteban clavijo_pau@ingenieriadesoftware.com 25
  • 26. Arquitectura Roo Construido sobre el contenedor OSGi Apache Felix. Spring Roo se compone de “Core Modules” y “Base Add-Ons” ISC - 2011 Paulo Clavijo Esteban clavijo_pau@ingenieriadesoftware.com 26
  • 27. Add-Ons Podemos crear add-ons propios con el add-on Add-on Creator Permite crear add-ons simples o avanzados El add-on simple es para crear configuraciones, modificar ficheros, o para copiar artefactos. El add-on avanzado es cuando se quiere generar código Java y AspectJ ITDs Trabaja con las utility classes y servicios proporcionados por Spring Roo Los desarrolladores pueden instalar add-ons disponibles en RooBot u otros repositorios. ISC - 2011 Paulo Clavijo Esteban clavijo_pau@ingenieriadesoftware.com 27
  • 28. Alternativas a Roo? Grails Apache Isis AppFuse OpenXava ISC - 2011 Paulo Clavijo Esteban clavijo_pau@ingenieriadesoftware.com 28
  • 29. Documentación Referencia Spring ROO – Documentación de referencia Spring ROO - Foro gvNIX - Documentación de referencia Libros ISC - 2011 Paulo Clavijo Esteban clavijo_pau@ingenieriadesoftware.com 29

×