Ejemplo de proyecto web ABM con Spring Roo
Un proyecto de ejemplo pequeño sobre el uso de Spring Roo.
Creación del proyecto
El proyecto ejemplo es para una aplicación web básica para atender pedidos en una pizzeria. Donde se contará con la posibilidad de tomar pedidos de pizza/s y de crear nuevos tipos de pizzas. Una pizza está compuesta de una base y una o más cubiertas.
El diagrama de clases representa un modelo simplificado del dominio problema de la pizzeria.
Es un buen punto de partida para el proyecto en cuestión a fin de entregar un primer prototipo de la aplicación para el dueño del producto.
- Paso 1: Crear carpeta del proyecto
mkdir pizzaDosIdeas
cd pizzaDosIdeas
roo
Nota: con el comando 'hint' se obtiene cual es el siguiente paso para generar el proyecto.
- Paso 2: Crear el proyecto Java
project --topLevelPackage com.springsource.roo.pizzaDosIdeas
- Paso 3: Configurar el ORM y la base de datos del sistema
persistence setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY
- Paso 4: Crear las entidades, atributos y como se relacionan
entity --class ~.domain.Cubierta --testAutomatically
field string --fieldName nombre --notNull --sizeMin 2
entity --class ~.domain.Base --testAutomatically field string --fieldName nombre --notNull --sizeMin 2
entity --class ~.domain.Pizza --testAutomatically field string --fieldName nombre --notNull --sizeMin 2 field number --fieldName precio --type java.lang.Float field set --fieldName coberturas --element ~.domain.Cubierta field reference --fieldName base --type ~.domain.Base
entity --class ~.domain.Pedido --testAutomatically field string --fieldName nombre --notNull --sizeMin 2 field string --fieldName direccion --sizeMax 30 field number --fieldName importe --type java.lang.Float field date --fieldName fechaEntrega --type java.util.Date field set --fieldName pizzas --element ~.domain.Pizza
- Paso 5: Ejecutar test y, según IDE desarrollo, ejecutar tarea para estructurar proyecto. Se puede utilizar STS.
perform tests
perform eclipse
- Paso 6: Crear la capa web con los test de selenium para esa capa
controller all --package ~.web
selenium test --controller ~.web.CubiertaController
selenium test --controller ~.web.BaseController
selenium test --controller ~.web.PizzaController
selenium test --controller ~.web.PedidoController
Y ahora sí, generamos el paquete y lo desplegamos en un contenedor web:
perform package
quit (salimos de roo)
mvn tomcat:run (en la carpeta raiz del proyecto)
Y tenemos la aplicación corriendo en http://localhost:8080/pizzadosideas/ !!!!
Automatizar tarea con script de roo
// Spring Roo 1.0.2.RELEASE
// Crear proyecto
project --topLevelPackage com.springsource.roo.pizzaDosIdeas
// Definir persistencia de datos
persistence setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY
// Definir modelo de datos
entity --class ~.domain.Cubierta --testAutomatically
field string --fieldName nombre --notNull --sizeMin 2
entity --class ~.domain.Base --testAutomatically
field string --fieldName nombre --notNull --sizeMin 2
entity --class ~.domain.Pizza --testAutomatically
field string --fieldName nombre --notNull --sizeMin 2
field number --fieldName precio --type java.lang.Float
field set --fieldName coberturas --element ~.domain.Cubierta
field reference --fieldName base --type ~.domain.Base
entity --class ~.domain.Pedido --testAutomatically
field string --fieldName nombre --notNull --sizeMin 2
field string --fieldName direccion --sizeMax 30
field number --fieldName importe --type java.lang.Float
field date --fieldName fechaEntrega --type java.util.Date
field set --fieldName pizzas --element ~.domain.Pizza
// Ejecutar test
perform test
// Definir IDE
perform eclipse
// Agregar capa de presentacion
controller all --package ~.web
selenium test --controller ~.web.CubiertaController
selenium test --controller ~.web.BaseController
selenium test --controller ~.web.PizzaController
selenium test --controller ~.web.PedidoController
// Generar paquete y terminar
perform package
quit