Guía rápida de Spring Roo

1. Información general

Spring Roo es una herramienta de desarrollo rápido de aplicaciones (RAD) que tiene como objetivo ofrecer resultados rápidos e instantáneos centrados en las aplicaciones web de Spring y las nuevas tecnologías de Spring. Nos permite generar código repetitivo y estructura de proyecto para aplicaciones Spring con comandos fáciles de usar.

Roo se puede utilizar como una aplicación independiente que se ejecuta desde la línea de comandos del sistema operativo. No es necesario utilizar Eclipse, Spring Tool Suite (STS) o cualquier otro IDE; de hecho, podemos usar cualquier editor de texto para escribir código.

Sin embargo, para simplificar, usaremos STS IDE con la extensión Roo.

2. Instalación de Spring Roo

2.1. Requisitos

Para seguir este tutorial, estos deben estar instalados:

  1. Java JDK 8
  2. STS
  3. Spring Roo

2.2. Instalación

Una vez que descargamos e instalamos Java JDK y STS, necesitamos descomprimir Spring Roo y agregarlo a la ruta del sistema.

Vamos a crear la ROO_HOME variable de entorno y añaden % ROO_HOME% \ bin a la ruta.

Para verificar que Roo está instalado correctamente, podemos abrir la línea de comandos y ejecutar los siguientes comandos:

mkdir baeldung cd baeldung roo quit

Pasados ​​unos segundos veremos:

 _ ___ _ __ _ __(_)_ __ __ _ _ __ ___ ___ / __| '_ \| '__| | '_ \ / _` | | '__/ _ \ / _ \ \__ \ |_) | | | | | | | (_| | | | | (_) | (_) | |___/ .__/|_| |_|_| |_|\__, | |_| \___/ \___/ |_| |___/ 2.0.0.RC1 Welcome to Spring Roo. For assistance press TAB or type "hint" then hit ENTER.

Roo está instalado y funciona. Tenga en cuenta que la versión de Spring Roo variará y los pasos e instrucciones pueden depender de la versión real utilizada.

Importante: Spring Roo 2.0 no es compatible con versiones anteriores de 1.x.

2.3. Agregar y configurar la extensión STS

STS, listo para usar, admite el desarrollo de aplicaciones Spring e incluye extensiones listas para usar. Sin embargo, la extensión Spring Roo no está incluida. Por lo tanto, necesitaremos agregarlo manualmente.

En STS, vayamos a Instalar nuevo software e importemos marcadores a Sitios de software disponibles . Actualmente, los marcadores se encuentran en la carpeta% ROO_HOME% \ conf . Una vez que importamos los marcadores, podemos buscar simplemente roo e instalar la última versión de Spring IDE Roo Support . Al final, se nos pedirá que reiniciemos STS.

Para conocer los pasos detallados y actualizados, siempre podemos consultar la documentación de introducción a Spring Roo.

Una vez que hayamos instalado Roo Support en STS, necesitamos configurar la extensión. Es tan fácil como señalar Roo Support a la carpeta % ROO_HOME% . Nuevamente, Spring Roo Getting Started brinda pasos detallados sobre cómo hacerlo.

Ahora podemos ir al menú de la aplicación "Ventana" una vez más y seleccionar Mostrar vista> Roo Shell.

3. Primer proyecto

3.1. Configurar un proyecto en STS

En STS, abramos la ventana de Roo Shell y hagamos clic en el icono Crear nuevo proyecto de Roo . Esto abrirá una ventana de New Roo Project .

Nombraremos el proyecto roo y usaremos com.baeldung como nuestro nombre de paquete de nivel superior. Podemos dejar todos los demás valores predeterminados y continuar hasta el final para crear un nuevo proyecto usando Roo.

En STS, esto ejecutará el siguiente comando para nosotros:

project setup --topLevelPackage com.baeldung --projectName "roo" --java 8 --packaging JAR

Como ya se mencionó, no necesitamos un IDE, ¡y podríamos haber ejecutado ese comando desde Roo Shell nosotros mismos! Para simplificar, estamos utilizando funciones integradas de STS.

Si obtenemos el siguiente error:

Could not calculate build plan: Plugin org.codehaus.mojo:aspectj-maven-plugin:1.8 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.codehaus.mojo:aspectj-maven-plugin:jar:1.8

la forma más fácil de solucionarlo es editar manualmente el archivo pom.xml y actualizar aspectj.plugin.version de 1.8 a 1.9 :

1.9

En esta etapa, no debería haber ningún error en el proyecto, y habrá algunos archivos generados automáticamente para nosotros.

3.2. Roo Shell

Ahora es el momento de familiarizarse con Roo Shell. La interfaz de usuario principal de Spring Roo es, de hecho, el símbolo del sistema.

Por lo tanto, volvamos a la ventana de Roo Shell. En él, ejecutemos el primer comando escribiendo 'h' y presionando CTRL + ESPACIO:

roo> h help hint

Roo nos sugerirá y autocompletará comandos automáticamente. Podemos escribir 'hola', presionar CTRL + ESPACIO, y Roo sugerirá automáticamente un comando de sugerencia .

Otra gran característica de Roo Shell es la conciencia del contexto . Por ejemplo, la salida del comando hint cambiará dependiendo de la entrada anterior.

Ahora ejecutemos el comando hint y veamos qué sucede:

roo> hint Roo requires the installation of a persistence configuration. Type 'jpa setup' and then hit CTRL+SPACE. We suggest you type 'H' then CTRL+SPACE to complete "HIBERNATE". After the --provider, press CTRL+SPACE for database choices. For testing purposes, type (or CTRL+SPACE) HYPERSONIC_IN_MEMORY. If you press CTRL+SPACE again, you'll see there are no more options. As such, you're ready to press ENTER to execute the command. Once JPA is installed, type 'hint' and ENTER for the next suggestion.

Nos da los siguientes pasos que debemos realizar. Agreguemos una base de datos ahora:

roo> jpa setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY Created SRC_MAIN_RESOURCES\application.properties Updated SRC_MAIN_RESOURCES\application.properties Updated SRC_MAIN_RESOURCES\application-dev.properties Updated ROOT\pom.xml [added dependencies org.springframework.boot:spring-boot-starter-data-jpa:, org.springframework.boot:spring-boot-starter-jdbc:, org.hsqldb:hsqldb:; added property 'springlets.version' = '1.2.0.RC1'; added dependencies io.springlets:springlets-data-jpa:${springlets.version}, io.springlets:springlets-data-jpa:${springlets.version}; added dependencies io.springlets:springlets-data-commons:${springlets.version}, io.springlets:springlets-data-commons:${springlets.version}]

En esta etapa, necesitaremos ejecutar algunos comandos. Entre cada uno de ellos, siempre podemos ejecutar el comando hint para ver qué sugiere Roo. Esta es una caracteristica muy útil.

Primero ejecutemos los comandos y luego los revisaremos:

roo> entity jpa --class ~.domain.Book field string --fieldName title --notNull field string --fieldName author --notNull field string --fieldName isbn --notNull repository jpa --entity ~.domain.Book service --all web mvc setup web mvc view setup --type THYMELEAF web mvc controller --entity ~.domain.Book --responseType THYMELEAF

Ahora estamos listos para ejecutar nuestra aplicación. Sin embargo, retrocedamos por los comandos para ver lo que hemos hecho.

First, we created a new JPA persistent entity in the src/main/java folder. Next, we created three String fields in Book class, gave them a name and set to be not null.

After that, we have generated Spring Data repository for the specified entity and created a new service interface.

In the end, we included Spring MVC configuration, installed Thymeleaf and created a new controller that manages our entity. Because we have passed Thymeleaf as the response type, the generated methods and views will reflect this.

3.3. Running the Application

Let's refresh the project and right click on roo project and select Run As > Spring Boot App.

Once the application has started, we can open a web browser and go to //localhost:8080. Next, to Roo icon, we will see Book menu and underneath two options: Create Book and List Books. We can use this to add a book to our application and view the list of added books.

3.4. Other Features

When we open Book.java class file, we'll notice that the class is annotated with @Roo annotations. These were added by Roo Shell and are used to control and customize the content of AspectJ inter-type declaration (ITD) files. We can view the files in Package Explorer in STS by unselecting “Hide generated Spring Roo ITDs” filter in View Menu, or we can open the files directly from the file system.

Roo annotations have SOURCE retention policy. This means the annotations won't be present in compiled class bytecode, and there won't be any dependency to Roo in deployed applications.

Another, obviously missing part in the Book.java class are getters and setters. These are stored in separate AspectJ ITDs files, as already mentioned. Roo will actively maintain this boilerplate code for us. Therefore, changes to fields in any class will be automatically reflected in AspectJ ITDs as Roo is “monitoring” all changes – either done via Roo Shell or directly by a developer in IDE.

Roo will take care of the repetitive code like toString() or equals() methods too.

Además, el marco se puede eliminar fácilmente del proyecto, evitando el bloqueo del proveedor, eliminando anotaciones e insertando AspectJ ITD en el código java estándar.

4. Conclusión

En este ejemplo rápido, logramos instalar y configurar Spring Roo en STS y creamos un pequeño proyecto.

Usamos Roo Shell para configurarlo y no tuvimos que escribir una sola línea de código Java real. Y pudimos obtener un prototipo de aplicación funcional en unos minutos y Roo se encargó de todo el código estándar por nosotros.

Como siempre, el código utilizado a lo largo de la discusión se puede encontrar en GitHub.