Cargando...

Hola Mundo con Spring Boot

Spring Initializr

Spring Initializr es la herramienta que nos permitirá crear la plantilla de un proyecto con Spring Boot. Para acceder a esta herramienta ingresa a https://start.spring.io/ y desde aquí podremos elegir el manejador de dependencias Maven o Gradle y el lenguaje de programación a utilizar. A la fecha de hoy permite elegir entre Java, Kotlin y Groovy; para este ejemplo usare Maven y Java.

La pantalla es muy intuitiva por lo que no me detendré demasiado a explicarla:

Spring Initializr

La sección de Project Metadata, permite configurar los atributos de un proyecto Maven, con ayuda del botón + Options podremos configurar mas opciones del proyecto como el Nombre, la Descripción, el nombre del paquete base, el tipo de artefacto a generar Jar o War e incluso la versión del JDK. Esta sección permite, por así decirlo, editar el archivo pom.xml de maven en forma gráfica. A continuación muestro los atributos que configure para este proyecto Maven.

Metadata Hola Mundo

Una vez elegidas todas las configuraciones que prefieras debes descargar el template dando click al botón Generate. La herramienta lo descarga comprimido en formato .zip. Una vez descargado lo he importado en Eclipse y la estructura de archivos del proyecto es la siguiente:

A continuación explico los archivos mas importantes:

  • ServletInitializer.java. Esta clase extiende a la clase SpringBootServletInitializer que es la que ejecuta la aplicación Spring Boot. La ejecuta desde el archivo WAR desplegado en el contenedor web Tomcat que viene embebido dentro de la misma aplicación. En general es la que inicializa el contexto de la aplicación y vincula los beans, servlets, filters, etc para que funcionen en conjunto mientras la aplicación esta en ejecución.
  • SpringBootHolaMundoApplication.java. Es la clase que contiene el método main y desde donde se arranca la aplicación con Spring Boot. Para esta primera entrega, es el único archivo que vamos a modificar para mostrar un mensaje en la consola.
  • application.properties. Desde aquí podemos configurar todas las propiedades de la aplicación, por ejemplo el contexto, el puerto donde se desplegara, las propiedades de la conexión a la base de datos, etc.
  • SpringBootHolaMundoApplicationTests.java. Es una prueba unitaria vacía que genera Spring Initializr. En otra entrega mas adelante abordare el tema de pruebas unitarias con Spring Boot.
  • pom.xml. Es el archivo descriptor de Maven
  • y desde aquí podemos agregar mas dependencias manualmente para la aplicación.

Para este ejemplo vamos a dejar casi todos los archivos tal cual fueron descargados y vamos a iniciar la aplicación para ver que sucede . Solo vamos a modificar la clase SpringBootHolaMundoApplication.java para mostrar el clásico mensaje de Hola Mundo en la consola. En el mundo de la programación existe un mito que dice que si no lo haces, seras un mal desarrollador en este lenguaje/framework. Vamos a ello, modifica el código de la clase para que se parezca al siguiente:

package com.notasprogramacion.holamundo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringBootHolaMundoApplication {

	public static void main(String[] args) {
		System.out.println("Hola Mundo Spring Boot");
		SpringApplication.run(SpringBootHolaMundoApplication.class, args);
	}

}

Observa como en la linea 10 justo antes de iniciar la aplicación se esta pintando el mensaje ‘Hola Mundo Spring Boot’ con un System.out.println.

Ahora vamos a ver como iniciar la aplicación, esto se puede realizar de dos maneras. La primera es con ayuda del IDE Eclipse y la otra es desde una linea de comandos. En lo personal me parece mas sencillo desde el IDE; para ello solo hay que dar click derecho sobre la clase SpringBootHolaMundoApplication.java y en el menu que se presenta elegir las opciones Run As –> 2 Java Application.

La segunda forma es entrando a la carpeta raíz de la aplicación (donde esta el archivo pom.xml) desde una consola de MS-DOS o alguna otra terminal (si usas Linux o Mac). Una vez posicionado en esa ruta, basta con ejecutar el siguiente comando para iniciar la aplicación:

mvn spring-boot:run

De cualquiera de las dos formas que decidas iniciar la aplicación ya sea con el IDE o con el comando; El proyecto ya viene con un script que automáticamente hace estas tareas sin que tu tengas que mover un solo dedo:

  • Compila todas las clases de la aplicación.
  • Genera el artefacto War.
  • Levanta el contenedor Apache Tomcat.
  • Para desplegar copia el archivo War en la carpeta de despliegue de Tomcat.

A continuación muestro la consola de Eclipse con los mensajes de log que se pintan al iniciar la aplicación. Observa que el mensaje de Hola Mundo Spring Boot claramente es el primero que se muestra en la consola. Pon atención a los demás logs y te darás cuenta como la aplicación se queda en ejecución; con ayuda del botón Rojo podemos detener la ejecución en cualquier memento. Es importante mencionar que la aplicación inicia por defecto desplegada en un Apache Tomcat en el Puerto 8080 y sin un contexto, por lo que para acceder desde un navegador web basta con entrar a la url http://localhost:8080/.

Quizás si trataste de acceder a dicha URL te salio un mensaje de error «Whitelabel Error Page …bla, bla bla», lo cual es algo normal porque no hemos mapeado ninguna URL para acceder a algún recurso dentro de la aplicación web (recordemos que es un WAR que esta corriendo en un contenedor Tomcat). Este mensaje es genérico y Spring Boot lo trae configurado por defecto para mostrarlo en caso de ocurrir algún error.

Hasta aquí le vamos a dejar con esta primera entrega sobre Spring Boot. En la próxima entrega explicare como configurar algunas cosas en la aplicación, como las siguientes:

  • Establecer un contexto para la aplicación.
  • Cambiar el numero de puerto donde se despliega.
  • Crearemos una URL en la aplicación para devolver un JSON al acceder a ésta.
  • Entre otras cosas.

Gracias por leerme, hasta la próxima.

Deja un comentario

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