Arranca con Spring Initializr

En este tutorial vamos a ver cómo utilizar la herramienta Spring Initializr para crear fácilmente la estructura básica de un proyecto Spring Boot.

Índice de contenidos

1. Introducción

En muchos casos empezar un proyecto con maven/gradle y spring es más complejo de lo que parece. Crear un andamiaje básico es siempre un primer paso que, si no se hace bien, nos acaba dando más de un quebradero de cabeza: dependencias solapadas, dependencias con más de una versión… En principio para esto ya existen herramientas como el plugin archetype de Maven o su equivalencia en Gradle. Sin embargo en el primer caso la gente de Spring parece que no da soporte ya a esa plantilla, que apunta a versiones muy antiguas. En el caso de Gradle no existe siquiera un init type para Spring Boot. Hoy vamos a aprender a crear un proyecto spring boot utilizando Spring Initializr. Esta herramienta nos va a ayudar a generar un proyecto desde cero especificando la configuración y dependencias de nuestro proyecto de forma sencilla y visual a través de una aplicación web. Por último veremos como utilizar Spring Initializr a través de la integración con IntelliJ IDEA.

2. Entorno

El tutorial está escrito usando el siguiente entorno:
  • Hardware: Portátil MacBook Pro Retina 15′ (2.5 Ghz Intel Core I7, 16GB DDR3).
  • Sistema Operativo: Mac OS El Capitan 10.11.5
  • Entorno de desarrollo: IntelliJ IDEA 2016.2 EAP

3. Initializr desde la web

La forma más sencilla de utilizar Spring Initializr es desde la propia web. Una vez dentro nos recibe una sencilla interfaz en la que podemos introducir algunos valores típicos para configurar un proyecto de maven o gradle. La web tiene 2 modos de uso entre los que se puede alternar a través de un link en la parte inferior: simple y completa.

3.1. Versión simple

La versión simple de la página ofrece unas pocas opciones básicas suficientes para generar el proyecto.

initializr_09

  • Tipo de proyecto: Proyecto Maven o Proyecto Gradle. El artefacto que se va a generar lo hará bien con un archivo pom.xml con su script y archivos para el wrapper de maven, bien con un archivo build.gradle y sus correspondientes archivos para el wrapper de gradle
  • Versión de Spring Boot: La versión del starter parent de Spring Boot de la que vamos a depender. Aquí nos permiten incluso depender de versiones de desarrollo.
  • Group: Será el campo groupId en el descriptor de maven y el nombre del paquete base de las clases de nuestra aplicación.
  • Artifact: Nombre de nuestro artefacto. En maven se va a convertir en los campos artifactId y name. En gradle irá a parar al campo jar.baseName. Este será además el nombre del archivo zip que se va a generar.
  • Dependencies: Por último tenemos un buscador de dependencias que básicamente se corresponden con los starters de spring boot disponibles. El campo funciona haciendo una búsqueda por texto sobre la que se nos van dando sugerencias.

3.2. Versión completa

La versión completa nos permite definir el resto de los campos necesarios para nuestra build inicial. Además de los campos de la versión simple, la versión completa nos permite escoger algunos más:

initializr_11

  • Name: Va a parar al campo name de nuestro archivo pom.xml. En gradle no tiene efecto.
  • Description: Va a parar al campo description de nuestro archivo pom.xml. En gradle no tiene efecto.
  • Package Name: Nombre del paquete base de las clases de la aplicación en caso de que sea diferente a nuestro campo Group.
  • Packaging: Empaquetado de nuestro artefacto: jar o war. Esto afecta a los plugins de construcción que se especifican en el descriptor de la aplicación (pom.xml o build.gradle) y a la estructura de archivos que se crea.
  • Java Version: Versión de java que vamos a especificar para nuestro artefacto. En el momento de escribir este tutorial da a escoger entre 1.6, 1.7 y 1.8
  • Language: En el momento de escribir el tutorial da a escoger entre Java, Groovy y Kotlin.
  • Dependencies: Lo mismo que en la versión simple de la página pero en esta ocasión se nos presenta una serie de checkboxes con todas las opciones posibles.

3.3. Estructura generada

Cuando terminamos de establecer todas las opciones y tras hacer clic en el botón “Generate Project” nos descargaremos un archivo comprimido que contiene la estructura base de nuestro proyecto. Vamos a echar un vistazo a ver qué contiene. Tomamos como ejemplo los proyectos construidos para maven con empaquetado de jar. La estructura generada para gradle es casi idéntica. Como podemos ver se generan los directorios necesarios para los paquetes pertenecientes a código (src/main/java) y pruebas (src/test/java). Además se genera el directorio de recursos (src/main/resources) con un fichero application.properties vacío dentro.

initializr_01

En caso de haber especificado el empaquetado como war la estructura generada incluye además dos directorios adicionales: Un directorio para los recursos estáticos utilizados por la aplicación web tales como archivos .css e imagenes (src/main/resources/static) y otro para las vistas de la tecnología que utilicemos (src/main/resources/templates). Estos son los directorios que utiliza spring boot para este tipo de recursos por defecto.

initializr_02

4. Initializr desde IntelliJ IDEA

En caso de ser usuario de IntelliJ IDEA el propio IDE cuenta con integración con el portal de Spring Initializr, con lo que seremos capaces de generar el proyecto sin tener siquiera que abrir un navegador web. En este caso los pasos a seguir son: Creamos un proyecto o módulo nuevo desde el menú con File > New > Project… o File > New > Module…. Esto hará aparecer la ventana de selección de tipo de proyecto.

initializr_03

En esa ventana seleccionamos como tipo de proyecto/módulo “Spring Initializr”. En este momento nos dejará escoger la JDK a utilizar de entre las existentes y la URL de Spring Initializr, que dejaremos tal como está.

initializr_04

En las siguientes ventana elegimos los mismos campos que en la interfaz web. Nada que no hayamos visto en la sección anterior.

initializr_05 initializr_06

Finalmente el wizard nos pide el nombre y ruta locales del nuevo proyecto o módulo y nos preguntará si queremos importarlo. Ya tenemos el nuevo proyecto en nuestro entorno disponible para comenzar a trabajar. initializr_08

5. Conclusiones

Hemos visto lo sencillo que resulta iniciar un proyecto Spring Boot utilizando Spring Initializr. Esta opción sustituye de facto a la herramienta archetype de Maven. Hemos aprendido a utilizar la herramienta a través de su interfaz web y a través de IntelliJ IDEA.

6. Referencias