SlideShare una empresa de Scribd logo
Introducción a Spring Roo
Desarrollo 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
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
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
¿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
¿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
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
Arquitectura DDD




                              ISC - 2011
                         Paulo Clavijo Esteban
                   clavijo_pau@ingenieriadesoftware.com   7
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
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
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
Generando una aplicación en minutos

   Demo 1 – Aplicación Inventario

roo> project ­­topLevelPackage com.curso.inventario
roo> jpa setup ­­provider HIBERNATE ­­database HYPERSONIC_IN_MEMORY
roo> entity ­­class ~.domain.Producto ­­testAutomatically
roo> field number ­­fieldName idProducto ­­type int ­­notNull
roo> field string ­­fieldName nombre ­­notNull
roo> field string ­­fieldName descripcion
roo> field number ­­fieldName precio ­­type double
roo> web mvc setup
roo> web mvc all ­­package ~.web
roo> perform tests




                                      ISC - 2011
                                 Paulo Clavijo Esteban
                           clavijo_pau@ingenieriadesoftware.com       11
Generando una aplicación




                               ISC - 2011
                          Paulo Clavijo Esteban
                    clavijo_pau@ingenieriadesoftware.com   12
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
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
Infraestructura Roo




                                 ISC - 2011
                            Paulo Clavijo Esteban
                      clavijo_pau@ingenieriadesoftware.com   15
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
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
Demo 2 – Aplicación Reserva de Libros (3/9)

roo> project ­­topLevelPackage com.curso.reserva
roo> jpa setup ­­provider HIBERNATE ­­database HYPERSONIC_IN_MEMORY


// Definición de las entidades
roo> entity ­­class ~.domain.TipoLibro ­­testAutomatically
field string ­­fieldName nombre ­­notNull ­­sizeMin 3 ­­sizeMax 20
field string ­­fieldName descripcion


roo> entity ­­class ~.domain.Autor ­­testAutomatically
field string ­­fieldName nombre ­­notNull
field string ­­fieldName biografia


roo> enum type ­­class ~.reference.FormatoLibro
enum constant ­­name papel
enum constant ­­name digital


                                        ISC - 2011
                                   Paulo Clavijo Esteban
                             clavijo_pau@ingenieriadesoftware.com     18
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 ­­notNull


roo> entity ­­class ~.domain.Libro ­­testAutomatically 
roo> field string ­­fieldName isbn ­­notNull ­­sizeMin 10 ­­sizeMax 13
roo> field string ­­fieldName titulo ­­notNull
roo> field string ­­fieldName resumen ­­sizeMax 250
roo> field date ­­fieldName fechaPublicacion ­­type java.util.Date
roo> field number ­­fieldName numeroPaginas ­­type int
roo> field enum ­­fieldName formato ­­type ~.reference.FormatoLibro 
­­notNull




                                      ISC - 2011
                                 Paulo Clavijo Esteban
                           clavijo_pau@ingenieriadesoftware.com        19
Demo 2 – Aplicación Reserva de Libros (5/9)

//Relación Uno a uno
roo> field reference ­­fieldName tipo ­­type ~.domain.TipoLibro 
­­notNull ­­class ~.domain.Libro


//Relación Uno a muchos
roo> field reference ­­fieldName libro ­­type ~.domain.Libro ­­class 
~.domain.Reserva
roo> field set ­­fieldName reservas ­­type ~.domain.Reserva ­­mappedBy 
libro ­­notNull false ­­cardinality ONE_TO_MANY  ­­class 
~.domain.Libro


//Relación Muchos a muchos
roo> field set ­­fieldName autores ­­type ~.domain.Autor ­­class 
~.domain.Libro
roo> 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
Demo 2 – Aplicación Reserva de Libros (6/9)

// Scaffolding automático de la capa web
roo> web mvc setup
roo> web mvc all ­­package ~.web
roo> web mvc language ­­code es


//Buscadores
roo> finder add ­­finderName findLibroesByIsbn ­­class ~.domain.Libro
roo> finder add ­­finderName findLibroesByTitulo ­­class ~.domain.Libro
roo> web mvc finder all


// Ajuste del nivel de log
roo> logging setup ­­level INFO


roo> perform tests
roo> perform eclipse


                                        ISC - 2011
                                   Paulo Clavijo Esteban
                             clavijo_pau@ingenieriadesoftware.com       21
Demo 2 – Aplicación Reserva de Libros (7/9)




                                ISC - 2011
                           Paulo Clavijo Esteban
                     clavijo_pau@ingenieriadesoftware.com   22
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
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
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
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
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
Alternativas a Roo?

  Grails
  Apache Isis
  AppFuse
  OpenXava




                                 ISC - 2011
                            Paulo Clavijo Esteban
                      clavijo_pau@ingenieriadesoftware.com   28
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

Más contenido relacionado

PPT
CDI para Java EE 7
PDF
Ediciones de java
PPTX
3.creacion de componentes visuales
PPTX
Workshop: Testeando nuestra aplicaciones.
PPTX
Ingenieria de Software
DOCX
R esume libro el gran libro de android
PDF
Entornos-de-Desarrollo-Eclipse-y-Android-SDK
ODP
Spring roo
CDI para Java EE 7
Ediciones de java
3.creacion de componentes visuales
Workshop: Testeando nuestra aplicaciones.
Ingenieria de Software
R esume libro el gran libro de android
Entornos-de-Desarrollo-Eclipse-y-Android-SDK
Spring roo

Similar a Introducción a Spring Roo (20)

PDF
Seminario Spring Roo. Monitorización con Spring Insight
PDF
Java EE 6
PDF
Java EE 6
PDF
Presentacion Spring Roo Java Mania
PDF
Introducción a java EE 7
PDF
63997661 tecnologia-cliente-servidor-con-java
PDF
Taller introducción Java EE 7 @UAPA
PDF
[ES] Introducción a Java EE 7 & HTML 5
DOCX
TEMA Nº 1: INTRODUCCIÓN A J2EE
DOCX
TEMA Nº 1: INTRODUCCIÓN A J2EE
PDF
Presentacion Spring Roo Java Mania
PPTX
Modulo 1 java ee platform
PPT
Spring ROO
DOCX
Israel tecnologias para desarrollo-web
PDF
Seminario de programación Java, con Apache Maven, J2EE, JPA, Primefaces
PDF
[ES] Introducción a Java EE 7
PDF
1/9 Curso JEE5, Soa, Web Services, ESB y XML
PDF
Inyección de dependencia
PDF
Introducción a gvNIX y Spring Roo
Seminario Spring Roo. Monitorización con Spring Insight
Java EE 6
Java EE 6
Presentacion Spring Roo Java Mania
Introducción a java EE 7
63997661 tecnologia-cliente-servidor-con-java
Taller introducción Java EE 7 @UAPA
[ES] Introducción a Java EE 7 & HTML 5
TEMA Nº 1: INTRODUCCIÓN A J2EE
TEMA Nº 1: INTRODUCCIÓN A J2EE
Presentacion Spring Roo Java Mania
Modulo 1 java ee platform
Spring ROO
Israel tecnologias para desarrollo-web
Seminario de programación Java, con Apache Maven, J2EE, JPA, Primefaces
[ES] Introducción a Java EE 7
1/9 Curso JEE5, Soa, Web Services, ESB y XML
Inyección de dependencia
Introducción a gvNIX y Spring Roo
Publicidad

Más de Paulo Clavijo (15)

PDF
Consumer-Driven Contract Testing - Workshop - January 2021
PDF
User story slicing exercise
PDF
CI/CD non-breaking changes exercise - Cork Software Crafters - February 2020
PDF
Breaking Dependencies Legacy Code - Cork Software Crafters - September 2019
PDF
Legacy Code and Refactoring Workshop - Session 1 - October 2019
PDF
Approval Testing & Mutation Testing - Cork Software Crafters - June 2019
PDF
TDD and Simple Design Workshop - Session 1 - March 2019
PDF
TDD and Simple Design Workshop - Session 1 - November 2018
PDF
Outside-in TDD with Test Doubles
PDF
Angular and Redux
PDF
DDD Strategic Design - Context Maps - Paulo Clavijo - April 2018
PDF
Consumer-Driven Contract Testing
PDF
ATDD - Desarrollo Dirigido por Test de Aceptación
PDF
Tests Unitarios con JUnit 4
PDF
Gestión de Cambios de BBDD con LiquiBase
Consumer-Driven Contract Testing - Workshop - January 2021
User story slicing exercise
CI/CD non-breaking changes exercise - Cork Software Crafters - February 2020
Breaking Dependencies Legacy Code - Cork Software Crafters - September 2019
Legacy Code and Refactoring Workshop - Session 1 - October 2019
Approval Testing & Mutation Testing - Cork Software Crafters - June 2019
TDD and Simple Design Workshop - Session 1 - March 2019
TDD and Simple Design Workshop - Session 1 - November 2018
Outside-in TDD with Test Doubles
Angular and Redux
DDD Strategic Design - Context Maps - Paulo Clavijo - April 2018
Consumer-Driven Contract Testing
ATDD - Desarrollo Dirigido por Test de Aceptación
Tests Unitarios con JUnit 4
Gestión de Cambios de BBDD con LiquiBase
Publicidad

Último (20)

PDF
Conceptos básicos de programación tecnología.pdf
PDF
Temas y subtemas de las fichas 1 y 2.pdf
PPTX
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PPTX
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PDF
ACTIVIDAD 2.pdf j
PPTX
Presentación PASANTIAS AuditorioOO..pptx
PDF
Estrategia de apoyo tecnología grado 9-3
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
PDF
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
PDF
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
PDF
SAP Transportation Management para LSP, TM140 Col18
PPT
introduccion a las_web en el 2025_mejoras.ppt
PDF
La electricidad y la electrónica .pdf n
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
DOCX
Las nuevas tecnologías en la salud - enfermería técnica.
PDF
Estrategia de apoyo tecnología miguel angel solis
PDF
Maste clas de estructura metálica y arquitectura
DOCX
Trabajo colaborativo Grupo #2.docxmmuhhlk
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Conceptos básicos de programación tecnología.pdf
Temas y subtemas de las fichas 1 y 2.pdf
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
historia_web de la creacion de un navegador_presentacion.pptx
ACTIVIDAD 2.pdf j
Presentación PASANTIAS AuditorioOO..pptx
Estrategia de apoyo tecnología grado 9-3
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
SAP Transportation Management para LSP, TM140 Col18
introduccion a las_web en el 2025_mejoras.ppt
La electricidad y la electrónica .pdf n
Zarate Quispe Alex aldayir aplicaciones de internet .docx
Las nuevas tecnologías en la salud - enfermería técnica.
Estrategia de apoyo tecnología miguel angel solis
Maste clas de estructura metálica y arquitectura
Trabajo colaborativo Grupo #2.docxmmuhhlk
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx

Introducción a Spring Roo

  • 1. Introducción a Spring Roo Desarrollo 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 Inventario roo> project ­­topLevelPackage com.curso.inventario roo> jpa setup ­­provider HIBERNATE ­­database HYPERSONIC_IN_MEMORY roo> entity ­­class ~.domain.Producto ­­testAutomatically roo> field number ­­fieldName idProducto ­­type int ­­notNull roo> field string ­­fieldName nombre ­­notNull roo> field string ­­fieldName descripcion roo> field number ­­fieldName precio ­­type double roo> web mvc setup roo> web mvc all ­­package ~.web roo> 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.reserva roo> jpa setup ­­provider HIBERNATE ­­database HYPERSONIC_IN_MEMORY // Definición de las entidades roo> entity ­­class ~.domain.TipoLibro ­­testAutomatically field string ­­fieldName nombre ­­notNull ­­sizeMin 3 ­­sizeMax 20 field string ­­fieldName descripcion roo> entity ­­class ~.domain.Autor ­­testAutomatically field string ­­fieldName nombre ­­notNull field string ­­fieldName biografia roo> enum type ­­class ~.reference.FormatoLibro enum constant ­­name papel enum 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 ­­notNull roo> entity ­­class ~.domain.Libro ­­testAutomatically  roo> field string ­­fieldName isbn ­­notNull ­­sizeMin 10 ­­sizeMax 13 roo> field string ­­fieldName titulo ­­notNull roo> field string ­­fieldName resumen ­­sizeMax 250 roo> field date ­­fieldName fechaPublicacion ­­type java.util.Date roo> field number ­­fieldName numeroPaginas ­­type int roo> 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 uno roo> field reference ­­fieldName tipo ­­type ~.domain.TipoLibro  ­­notNull ­­class ~.domain.Libro //Relación Uno a muchos roo> field reference ­­fieldName libro ­­type ~.domain.Libro ­­class  ~.domain.Reserva roo> field set ­­fieldName reservas ­­type ~.domain.Reserva ­­mappedBy  libro ­­notNull false ­­cardinality ONE_TO_MANY  ­­class  ~.domain.Libro //Relación Muchos a muchos roo> field set ­­fieldName autores ­­type ~.domain.Autor ­­class  ~.domain.Libro roo> 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 web roo> web mvc setup roo> web mvc all ­­package ~.web roo> web mvc language ­­code es //Buscadores roo> finder add ­­finderName findLibroesByIsbn ­­class ~.domain.Libro roo> finder add ­­finderName findLibroesByTitulo ­­class ~.domain.Libro roo> web mvc finder all // Ajuste del nivel de log roo> logging setup ­­level INFO roo> perform tests roo> 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