Está en la página 1de 29

Introduccin a Spring Roo

Desarrollo Java EE altamente productivo

Your Name
Line 1 of Your Affiliation ISC 2011 Line 2 Noviembre of Your Affiliation

Paulo Clavijo Esteban

clavijo_pau@ingenieriadesoftware.com

Agenda

Introduccin a Spring Roo


Objetivo Principal Qu es Spring Roo? Spring Roo CLI Generando una aplicacin de ejemplo. Tecnologas y Arquitectura Ncleo y Add-ons.

Demo Aplicacin Reserva Libros

Paulo Clavijo Esteban


clavijo_pau@ingenieriadesoftware.com

ISC - 2011

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

Qu es Spring Roo?

Ben Alex: Roo es un pequeo 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

Qu es Spring Roo?

Spring Roo es una herramienta de desarrollo rpido de aplicaciones o RAD, que permite el desarrollo de aplicaciones Java EE de forma muy productiva y cmoda para el desarrollador. Las aplicaciones resultantes utilizan tecnologas Java conocidas como Spring Framework, Java Persistence API, Java Server Pages, Apache Maven, AspectJ, etc.

ISC - 2011
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com

Caractersticas principales (1/3)

Generacin de cdigo (activa y pasiva) para aplicaciones Java con Spring. Elimina el trabajo tedioso centrando el desarrollo en la lgica de negocio. Paradigma CoC (Convencin sobre configuracin). Enfoque DDD (Domain-Driven Development).
Dirigido por el modelo de entidades. Lgica en las entidades (Real Object Oriented), elimina capas redundantes. Rich Domain Model (RDM) en oposicin al anti-patrn Anemic Domain Model (ADM).
ISC - 2011
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com

Arquitectura DDD

ISC - 2011
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com

Caractersticas principales (2/3) Crea un proyecto en segundos. Realimentacin: aade valor durante todo el ciclo de vida. Las aplicaciones siguen las mejores prcticas de diseo. Permite auto-generar test unitarios y de integracin. No incorpora elementos adicionales al entorno de ejecucin, por lo que no penaliza la velocidad la aplicacin. No requiere ningn IDE. Recibe instrucciones a travs de una consola interactiva con auto-completado y ayuda en lnea.

ISC - 2011
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com

Caractersticas principales (3/3)


Extensible usando bundles OSGi. Aprovecha el conocimiento: no necesita ms 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

Spring Roo CLI


Spring Roo es una herramienta de Linea de Comandos (CLI). De fcil 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 aplicacin en minutos


Demo 1 Aplicacin Inventario
roo>projecttopLevelPackagecom.curso.inventario roo>jpasetupproviderHIBERNATEdatabaseHYPERSONIC_IN_MEMORY roo>entityclass~.domain.ProductotestAutomatically roo>fieldnumberfieldNameidProductotypeintnotNull roo>fieldstringfieldNamenombrenotNull roo>fieldstringfieldNamedescripcion roo>fieldnumberfieldNamepreciotypedouble roo>webmvcsetup roo>webmvcallpackage~.web roo>performtests

ISC - 2011
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com

11

Generando una aplicacin

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 automtico:


Preferences > General > Workspace > Refresh using native hooks or polling

ISC - 2011
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com

13

Cdigo Java generado


Roo genera cdigo que podemos dividir en dos categoras: Cdigo gestionado por Spring Roo. Ficheros AspectJ ITD (extensin .aj) Cdigo gestionado por el programador. Fuentes Java En tiempo de compilacin, el cdigo en los ficheros .aj, es tejido (weaved) en el cdigo 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 Aplicacin Reserva de Libros (1/9)


Requerimientos
La aplicacin debe permitir administrar las entidades Libro, TipoLibro, Autor y Reserva. As como la bsqueda de Libro por ISBN o titulo. Seguridad
Las pginas de gestin de Libro, TipoLibro y Autor son accesible a usuarios del rol ROLE_ADMIN La pgina de gestin de Reserva es accesible para usuarios del rol ROLE_USER

Pruebas
Test de integracin de las entidades Test automticos de la capa Web con Selenium

ISC - 2011
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com

16

Demo 2 Aplicacin Reserva de Libros (2/9)


Modelo de Dominio

Relacin One-to-one entre las entidades Libro y TipoLibro Relacin Many-to-one entre las entidades Reserva y Libro Relacin Many-to-Many entre las entidades Libro y Autor

ISC - 2011
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com

17

Demo 2 Aplicacin Reserva de Libros (3/9)


roo>projecttopLevelPackagecom.curso.reserva roo>jpasetupproviderHIBERNATEdatabaseHYPERSONIC_IN_MEMORY //Definicindelasentidades roo>entityclass~.domain.TipoLibrotestAutomatically fieldstringfieldNamenombrenotNullsizeMin3sizeMax20 fieldstringfieldNamedescripcion roo>entityclass~.domain.AutortestAutomatically fieldstringfieldNamenombrenotNull fieldstringfieldNamebiografia roo>enumtypeclass~.reference.FormatoLibro enumconstantnamepapel enumconstantnamedigital
ISC - 2011
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com

18

Demo 2 Aplicacin Reserva de Libros (4/9)


roo>entityclass~.domain.ReservatestAutomatically roo>fieldstringfieldNamenombrenotNull roo>fieldstringfieldNameemailnotNull roo>entityclass~.domain.LibrotestAutomatically roo>fieldstringfieldNameisbnnotNullsizeMin10sizeMax13 roo>fieldstringfieldNametitulonotNull roo>fieldstringfieldNameresumensizeMax250 roo>fielddatefieldNamefechaPublicaciontypejava.util.Date roo>fieldnumberfieldNamenumeroPaginastypeint roo>fieldenumfieldNameformatotype~.reference.FormatoLibro notNull

ISC - 2011
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com

19

Demo 2 Aplicacin Reserva de Libros (5/9)


//RelacinUnoauno roo>fieldreferencefieldNametipotype~.domain.TipoLibro notNullclass~.domain.Libro //RelacinUnoamuchos roo>fieldreferencefieldNamelibrotype~.domain.Libroclass ~.domain.Reserva roo>fieldsetfieldNamereservastype~.domain.ReservamappedBy libronotNullfalsecardinalityONE_TO_MANYclass ~.domain.Libro //RelacinMuchosamuchos roo>fieldsetfieldNameautorestype~.domain.Autorclass ~.domain.Libro roo>fieldsetfieldNamelibrostype~.domain.LibromappedBy autoresnotNullfalsecardinalityMANY_TO_MANYclass ~.domain.Autor
ISC - 2011
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com

20

Demo 2 Aplicacin Reserva de Libros (6/9)


//Scaffoldingautomticodelacapaweb roo>webmvcsetup roo>webmvcallpackage~.web roo>webmvclanguagecodees //Buscadores roo>finderaddfinderNamefindLibroesByIsbnclass~.domain.Libro roo>finderaddfinderNamefindLibroesByTituloclass~.domain.Libro roo>webmvcfinderall //Ajustedelniveldelog roo>loggingsetuplevelINFO roo>performtests roo>performeclipse
ISC - 2011
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com

21

Demo 2 Aplicacin Reserva de Libros (7/9)

ISC - 2011
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com

22

Demo 2 Aplicacin Reserva de Libros (8/9)


Aadiendo seguridad El comando 'security setup' aade Spring Security a la aplicacin.

Para ello:
Crea el fichero applicationContext-security.xml con la configuracin de Spring Security. Crea la vista login.jspx para la pgina 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 aadir las dependencias de Spring Security.

ISC - 2011
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com

23

Demo 2 Aplicacin Reserva de Libros (9/9)


Aadiendo seguridad
applicationContext-security.xml
<intercepturlpattern="/autors/**"access="hasRole('ROLE_ADMIN')"/> <intercepturlpattern="/libroes/**"access="hasRole('ROLE_ADMIN')"/> <intercepturlpattern="/tipolibroes/**"access="hasRole('ROLE_ADMIN')"/> <intercepturlpattern="/reservas/**"access="hasRole('ROLE_USER')"/> <intercepturlpattern="/**"access="permitAll"/>

ISC - 2011
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com

24

Novedades Spring Roo 1.2


Spring Roo ha tomado un enfoque prctico para reducir la complejidad, a menudo innecesaria, de las capa de servicio, repositorio o DAO. La nueva versin de Spring Roo 1.2.0.M1 incluye mayor soporte para capas de arquitectura. Pudiendo configurarlas a medida a las necesidades de la aplicacin. 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 cdigo 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

Documentacin

Referencia
Spring ROO Documentacin de referencia Spring ROO - Foro gvNIX - Documentacin de referencia

Libros

ISC - 2011
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com

29

También podría gustarte