Spring Roo
Spring Roo es una herramienta RAD extensible para Java. Basicamente es un generador de código avanzado, que se utiliza desde la linea de comandos invocando sentencias.
La idea detrás de Spring Roo es incrementar la productividad del desarrollador Java sin comprometer la integridad estructural o la flexibilidad de la solución. No contiene un componente Runtime. Esto es muy importante, no solo porque no ata la solución al framework, sino porque no genera overhead. Se puede eliminar facilmente.
Está construido con una serie de plugins (al estilo de Maven). Fue diseñado pensando en la usabilidad. Los comandos son contextuales; tiene los comandos "hint" y "help" para consultar el uso rápidamente y la tecla TAB para autocompletar.
Está basado en scripts, por lo que en caso que se cometer un error, se puede hacer rollback. Todos los comandos escritos se van guardando automáticamente (log.roo).
Contenido
- 1 Características
- 2 Requisitos
- 3 Configuración
- 4 Uso
- 5 Pasos para crear una aplicación mínima
- 6 Manejo de propiedades
- 7 Maven
- 8 Seguridad
- 9 Ejecutar un script
- 10 Ejemplos
- 11 Personalizacion de la capa de persistencia
- 12 Personalizacion de la capa de presentación
- 13 Problemas y soluciones
- 14 Para que es ideal
- 15 Lo que le falta
- 16 Ver también
Características
- Permite desarrollar una aplicación Web en minutos. Genera un war. Construye dos capas: la de persistencia y la de presentación. Para agregar la capa de negocio, se pueden agregar las clases manualmente a los controladores generados con Roo.
- Permite generar un modelo de datos complejo, incluyendo validaciones.
- La aplicación Web es RESTful y tiene soporte para internacionalización en varios idiomas.
- Tiene soporte de seguridad out-of-the-box.
- La presentación usa Dojo (incorporar otro, por ejemplo JQuery, se hace a mano y es costoso).
Generación de código
Es un generador de código hibrido, utilizando generación activa y pasiva.
Utiliza generación pasiva para generación de archivos java y xml. Utiliza generación activa para la metadata con la ayuda de los tags @Roo* y modifica gradualmente .aj y los jsp.
Sincroniza los cambios entre Roo y las modificaciones realizadas al código (roundtrip).
Spring Roo no interviene en runtime, solo lo hace en tiempo de desarrollo. Una vez creado el proyecto con Spring Roo, podría eliminarse y seguir trabajando con un IDE.
Librerías/Frameworks que usa
- Java
- AspectJ
- Eclipse
- Java Persistence API: Hibernate, OpenJPA, EclipseLink
- Java Server Pages
- JUnit
- Log4J
- Maven
- Selenium
- Spring Framework
- Spring MVC
- Spring Security
- Spring Web Flow
Requisitos
Tener instalado Java y Maven, las últimas versiones estables.
Configuración
Descargar la última versión de Roo del sitio oficial. Descomprimir en una carpeta en el disco local. Ej: c:\roo-1.2 Incluir la carpeta con los ejecutables dentro de la variable de entorno PATH. Ej.: c:\roo-1.2\bin
Uso
Para la ejecución de comandos podemos utilizar:
- el shell de roo mediante linea de comando
- el shell que viene embebido en el SpringSource Tool Suite
- o el IDE que utilizás habitualmente, por ejemplo Eclipse. En este caso deberías instalar el plugin para trabajar con aspectos y maven.
Para empezar a usar los comandos Roo mediante el shell, crear una carpeta e invocar a Spring Roo Ej.:
mkdir helloworld cd helloworld roo
Al hacer eso se iniciará la interfaz y desplegará el siguiente mensaje:
/ __ \/ __ \/ __ \ / /_/ / / / / / / / / _, _/ /_/ / /_/ / /_/ |_|\____/\____/ 1.0.2.RELEASE [rev 638] Welcome to Spring Roo. For assistance press TAB or type "hint" then hit ENTER. roo>
La tecla TAB despliega las opciones:
*/ /* // ; addon date development exit help hint metadata poll project quit reference script system version roo>
La sentencia help lista todos los comandos con descripciones breves.
Pasos para crear una aplicación mínima
- Crear el proyecto
- Elegir el framework de persistencia
- Crear el modelo de dominio
- Generar de la capa de presentación
En detalle podés verlo en Roo: Pasos para crear una aplicación mínima.
Manejo de propiedades
Roo genera archivos de propiedades dentro del proyecto, por ejemplo: database.properties. Dichos archivos pueden ser modificados automáticamente por los comandos de roo. Se debe tener en cuenta entonces que al ejecutar un comando que impacte valores configurados manualmente, será necesario volver a configurarlos. Las claves definidas manualmente por el usuario no son alteradas por ningún comando de roo.
Maven
Desde Roo se pueden ejecutar varias tareas de Maven sin tener que salir del entorno. Por ejemplo:
- 'perform tests' equivale a 'mvn test'
- 'perform eclipse' equivale a 'mvn eclipse:eclipse'
Seguridad
El módulo de seguridad que viene predeterminado necesita unos pequeños cambios de configuración. De forma predeterminada viene configurado un path segurizado que no corresponde con la aplicación en desarrollo. Se invoca mediante la sentencia:
security setup
Ejecutar un script
Todo lo que se va ejecutando por consola, se va grabando en un archivo de log (log.roo). Es posible re-ejecutar las acciones, copiando el archivo con otro nombre y utilizando la sentencia 'script <nombre de archivo>' Ej.:
roo>script helloworld.roo
Ejemplos
Necesitamos tener correctamente instaladas las siguientes versiones (verificar la configuración de las variables de entorno PATH y JAVA_HOME):
- JDK 1.6 UPDATE 21
- Spring Roo 1.0.2
- Apache Maven 2.2.1
Para poder ejecutar los siguientes ejemplos:
- Ejemplo de script con Spring Roo
- Ejemplo de proyecto web ABM con Spring Roo
- Ejemplo de proyecto web ABM con SpringSource Tool Suite
Personalizacion de la capa de persistencia
En Capa de Persistencia de Spring Roo veremos algunas características de uso con Oracle.
Personalizacion de la capa de presentación
En Capa de Presentación de Spring Roo veremos como cambiar la apariencia de las pantallas web.
Problemas y soluciones
Para que es ideal
- Hacer backends de Administración (ABMs/CRUDs con interfaz Web)
Lo que le falta
- La posibilidad de importar modelos de datos,ya sea desde la base de datos o bien de un archivo de configuración Hibernate. (próximamente disponible en la versión 1.1.0)