Entorno y herramientas de desarrollo para Spring Boot

Entorno y herramientas de desarrollo para Spring Boot

Este artículo continua la serie iniciada en el primer artículo.

En este artículo vamos a presentar diferentes herramientas necesarias para el desarrollo, compilación y ejecución del proyecto de prueba. Recordamos que este proyecto está disponible en Github.

Desarrollo

Para poder desarrollar y hacer nuestras propias pruebas en el proyecto de ejemplo o en otro nuevo, necesitaremos:

1. Java 8

O incluso Java 11. Anclados en Java 6, nos propusimos avanzar hasta Java 8 o Java 11. Hay información sobre versionado en la página oficial de OpenJDK.

Estas versiones de Java nos aportan, además de acceso a API’s más completas y avanzadas, cosas como expresiones lambda por ejemplo utilizadas en el método getUsers() del servicio de usuarios:

return IterableUtil.toStream(this.userRepository.findAllByOrderByIdAsc())
  .map(user -> new UserBasicDetailsCO(user.getId(), user.getUsername(), user.getEmail()))
  .collect(Collectors.toList());

Este código, por ejemplo, recupera todos los usuarios (veremos los repositorios más adelante en otro artículo).
Después, con el operador map, iteramos sobre cada uno de ellos, creaando, entonces, para cada uno, un nuevo objeto detalles.
Finalmente, une todos los usuarios en una lista.

El código equivalente «tradicional» sería:

List userBasicDetailsCOs = new ArrayList();
for (User user : this.userRepository.findAllByOrderByIdAsc()) {
  userBasicDetailsCOs.add(new UserBasicDetailsCO(user.getId(), user.getLogin(), user.getEmail()));
}
return userBasicDetailsCOs;
2. Eclipse

Para facilitar el desarrollo recomendamos el uso de un IDE o al menos un editor de texto. Podemos utilizar Netbeans, aunque nosotros, quizá por razones históricas, utilizamos Eclipse.
Este IDE facilita el desarrollo de código a través de diferentes funciones e integraciones:

  • Navegación de código
  • Compilación en vivo
  • GIT
  • Maven
  • y un larguísimo etc.
3. Maven

Es un gestor de dependencias, y algo más. Podríamos haber utilizado Gradle, pero utilizamos Maven.
Permite gestionar, de una manera más o menos sencillas, algunas propiedades del proyecto, como:

  • nombre
  • versión
  • tipo de empaquetado
  • perfiles
  • dependencias

Esta última característica (la gestión de dependencias) es la que me parece más relevante. De esta manera, permite integrar otras librerías de manera recursiva. Es decir, explícitamente le dices al proyecto, a través de su fichero de configuración pom.xml, qué librerías necesitas y qué versiones de las mismas. Si estas librerías, a su vez, dependen de otras terceras, estas terceras también serán incluídas en el proyecto.

4. MySQL

Nuestro proyecto almacenará la información en una base de datos. Para ello, debemos ser capaces de:

  • crear y explotar nuestra base de datos (punto 4.1)
  • inicializar la base de datos (punto 4.2)
  • integrar la base de datos con nuestra aplicación (punto 4.3)
4.1. MySQLWorkbench

Es un conjunto de herramientas y utilidades para un Sistema Gestor de Bases de Datos. Permite crear y explotar bases de datos. Disponible en https://www.mysql.com/products/workbench/, lo utilizaremos para crear y depurar la base de datos de nuestro proyecto.

4.2. Inicialización

Para inicializar nuestra base de datos, primero la tendremos que crear. De esta forma, utilizaremos el programa anterior (MySQLWorkbench) para crear una base de datos con nombre, usuario y contraseña ‘application‘.
Después, inicalizaremos la base de datos ejecutando los scripts:
creates.sql para la inicialización de la estructura de la base de datos
inserts-dev.sql para la inicialización de los datos de prueba

4.3. Integración de base de datos y proyecto

Las propiedades de conexión e integración de la aplicación con la base de datos están definidas en el fichero de configuración.
En este fichero se definen diferentes propiedades, y ahora nos interesan:

  • spring.datasource.url: define la dirección de conexión a la base de datos. Permite la conexión a un host definido por la variable de entorno MYSQL_HOST o, si no existe, a localhost
  • spring.datasource.username: será el mismo que hemos creado, ‘application
  • spring.datasource.password: en nuestro caso, también ‘application
5. Git

Para el control de versiones utilizaremos Git. Para inicializar y descargar el proyecto antes debemos tener instalado un cliente de Git. Después, podremos ejecutar en la consola:

git clone https://github.com/cleventy/springboilerplate.git

Para más información, puedes consultar un artículo sobre gitflow.

6. Postman

Para probar el API de nuestra aplicación, ejecutar algunas partes y para depurar, utilizaremos una potente herramienta relacionada con diferentes fases del desarrollo de APIs, Postman.

7. Tomcat

Para ejecutar el proyecto necesitaremos un contenedor de aplicaciones web, en nuestro caso, Tomcat.

Compilación

Ahora que ya tenemos instaladas y configuradas todas las herramientas necesarias enumeradas en el punto anterior, podremos compilar el proyecto.
Para ello, haremos uso de Maven y de los perfiles definidos. En el proyecto, en el fichero pom.xml están definidos dos perfiles:

Para compilar la aplicación y generar el fichero adecuado para el perfil/entorno bastará con ejecutar, en la raíz del proyecto:

mvn package -Pdev

Que nos generará el archivo destino en la carpeta /target

Ejecución

Para ejecutar nuestra aplicación tenemos básicamente dos maneras, a través de JAR y a través de WAR.

1. JAR

Esta quizá es la manera más sencilla. Consiste en crear y ejecutar un JAR. Para ello, deberemos cambiar en el fichero de configuración de maven la línea war por jar y posteriormente compilar y ejecutar el proyecto a través de maven:

java -jar target/application-4.0.5.jar
2. WAR

Esta es nuestra opción por defecto. Necesitamos utilizar un contenedor de aplicaciones, en nuestro caso, Tomcat.
Para ello, deberemos:

  1. Generar el WAR a través del proceso de compilación
  2. Copiar el WAR resultante en la carpeta /webapps del Tomcat
  3. Ejecutar Tomcat:
/bin/catalina.bat jpda run

Podemos comprobar que la aplicación está ejecutándose accediendo a la URL local base del proyecto

Imagen principal: Photo by Domenico Loia on Unsplash

Un comentario en Entorno y herramientas de desarrollo para Spring Boot

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

« »