Date post: | 24-Nov-2015 |
Category: |
Documents |
Upload: | rodrigo-araya |
View: | 7 times |
Download: | 1 times |
1Your NameYour Name
Line 1 of Your AffiliationLine 1 of Your AffiliationLine 2 of Your AffiliationLine 2 of Your Affiliation
Desarrollo Java EE altamente productivoDesarrollo Java EE altamente productivo
ISC Noviembre 2011ISC Noviembre 2011Paulo Clavijo EstebanPaulo Clavijo [email protected][email protected]
Introduccin a Spring RooIntroduccin a Spring Roo
2Agenda
Introduccin a Spring RooObjetivo PrincipalQu es Spring Roo?Spring Roo CLIGenerando una aplicacin de ejemplo.Tecnologas y ArquitecturaNcleo y Add-ons.
Demo Aplicacin Reserva Libros
ISC - 2011Paulo Clavijo Esteban
3Objetivo Principal
El objetivo principal de Spring ROO es mejorar la productividad
de los desarrollos Java sin comprometer la integridad y
flexibilidad del sistema
ISC - 2011Paulo Clavijo Esteban
4Qu 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 - 2011Paulo Clavijo Esteban
5Qu 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 - 2011Paulo Clavijo Esteban
6Caractersticas 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 - 2011Paulo Clavijo Esteban
7Arquitectura DDD
ISC - 2011Paulo Clavijo Esteban
8Caractersticas 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 - 2011Paulo Clavijo Esteban
9Caractersticas 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 - 2011Paulo Clavijo Esteban
10
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 - 2011Paulo Clavijo Esteban
11
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 - 2011Paulo Clavijo Esteban
12
Generando una aplicacin
ISC - 2011Paulo Clavijo Esteban
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 WeavingConfigurar refresco automtico:
Preferences > General > Workspace > Refresh using native hooks or polling
ISC - 2011Paulo Clavijo Esteban
14
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 JavaEn tiempo de compilacin, el cdigo en los ficheros .aj, es tejido (weaved) en el cdigo de los fuentes Java.
ISC - 2011Paulo Clavijo Esteban
15
Infraestructura Roo
ISC - 2011Paulo Clavijo Esteban
16
Demo 2 Aplicacin Reserva de Libros (1/9)
RequerimientosLa 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_ADMINLa pgina de gestin de Reserva es accesible para usuarios del rol ROLE_USER
PruebasTest de integracin de las entidadesTest automticos de la capa Web con Selenium
ISC - 2011Paulo Clavijo Esteban
17
Demo 2 Aplicacin Reserva de Libros (2/9)
Modelo de Dominio
Relacin One-to-one entre las entidades Libro y TipoLibroRelacin Many-to-one entre las entidades Reserva y LibroRelacin Many-to-Many entre las entidades Libro y Autor
ISC - 2011Paulo Clavijo Esteban
18
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 - 2011Paulo Clavijo Esteban
19
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.FormatoLibronotNull
ISC - 2011Paulo Clavijo Esteban
20
Demo 2 Aplicacin Reserva de Libros (5/9)
//RelacinUnoauno
roo>fieldreferencefieldNametipotype~.domain.TipoLibronotNullclass~.domain.Libro
//RelacinUnoamuchos
roo>fieldreferencefieldNamelibrotype~.domain.Libroclass~.domain.Reserva
roo>fieldsetfieldNamereservastype~.domain.ReservamappedBylibronotNullfalsecardinalityONE_TO_MANYclass~.domain.Libro
//RelacinMuchosamuchos
roo>fieldsetfieldNameautorestype~.domain.Autorclass~.domain.Libro
roo>fieldsetfieldNamelibrostype~.domain.LibromappedByautoresnotNullfalsecardinalityMANY_TO_MANYclass~.domain.Autor
ISC - 2011Paulo Clavijo Esteban
21
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 - 2011Paulo Clavijo Esteban
22
Demo 2 Aplicacin Reserva de Libros (7/9)
ISC - 2011Paulo Clavijo Esteban
23
Demo 2 Aplicacin Reserva de Libros (8/9)
Aadiendo seguridadEl 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 - 2011Paulo Clavijo Esteban
24
Demo 2 Aplicacin Reserva de Libros (9/9)
Aadiendo seguridadapplicationContext-security.xml
ISC - 2011Paulo Clavijo Esteban
25
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 Roo1.2.0.M1 incluye mayor soportepara capas de arquitectura. Pudiendo configurarlas a medida a las necesidades de la aplicacin.1.2.0.RC1 soportara proyectosMaven multi modulo.
ISC - 2011Paulo Clavijo Esteban
26
Arquitectura Roo
Construido sobre el contenedor OSGi Apache Felix.Spring Roo se compone de Core Modules y Base Add-Ons
ISC - 2011Paulo Clavijo Esteban
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 cdigo Java y AspectJ ITDs
Trabaja con las utility classes y servicios proporcionados por Spring RooLos desarrolladores pueden instalar add-ons disponibles en RooBot u otros repositorios.
ISC - 2011Paulo Clavijo Esteban
28
Alternativas a Roo?
GrailsApache IsisAppFuseOpenXava
ISC - 2011Paulo Clavijo Esteban
29
Documentacin
ReferenciaSpring ROO Documentacin de referenciaSpring ROO - ForogvNIX - Documentacin de referencia
Libros
ISC - 2011Paulo Clavijo Esteban
Pgina 1Pgina 2Pgina 3Pgina 4Pgina 5Pgina 6Pgina 7Pgina 8Pgina 9Pgina 10Pgina 11Pgina 12Pgina 13Pgina 14Pgina 15Pgina 16Pgina 17Pgina 18Pgina 19Pgina 20Pgina 21Pgina 22Pgina 23Pgina 24Pgina 25Pgina 26Pgina 27Pgina 28Pgina 29