Spring Boot es en la actualidad un estándar en el desarrollo de aplicaciones Java, con mucho protagonismo en el mundo empresarial. Con una configuración inicial simplificada e inteligente permite levantar servicios en minutos. Incluye un servidor embebido y un ecosistema muy completo de starters que simplifican las dependencias necesarias para el desarrollo de muchos tipos de aplicaciones.

Objetivo

Para ejemplificar esta simplicidad, se desarrolla un servicio web con un solo endpoint que devuelva un mensaje de Hello World.

Creación del proyecto base

El ecosistema Spring cuenta con una herramienta que facilita la creación de la estructura base del proyecto, se trata de Spring initializr.

Ésta genera la estructura básica de un proyecto Spring Boot en segundos. Permite seleccionar la versión de Spring, el lenguaje, el build system (Maven o Gradle) y las dependencias necesarias, creando automáticamente un proyecto listo para abrir en cualquier IDE.

Para el Hello World solo es necesario incluir la dependencia de Spring Web.

Spring Initializr

Al pulsar en GENERATE se descarga un fichero comprimido con el proyecto que cuenta con la estructura y componentes mínimos para importar en cualquier IDE y desplegar la aplicación.

Proyecto generado con Spring Initializr

Este proyecto se puede importar o abrir desde cualquier IDE que cuente con soporte para desarrollo de aplicaciones Spring Boot. Para el ejemplo, se utiliza IntelliJ.

Aplicación generada por Spring Initializr

Creación del controlador

Un controlador en Spring es el componente encargado de recibir las peticiones HTTP, procesarlas y devolver una respuesta. Actúa como punto de entrada de la aplicación, mapeando URLs y métodos HTTP (GET, POST, etc.) a métodos Java. Separa la lógica de exposición de la API del resto de la aplicación y su lógica, que se conformará con otro tipo de componentes que se utilizarán para obtener respuestas más complejas.

Anotaciones RestController y GetMapping

Las anotaciones en Spring son etiquetas que se colocan sobre clases y métodos para decirle al framework qué papel cumple cada uno y cómo deben actuar, sin necesidad de escribir código adicional de configuración.

RestController

Es la anotación que marca una clase como un componente que expone endpoints REST. Todo lo que devuelvan sus métodos será serializado automáticamente (Strings, JSONs, etc.).

GetMapping

Asocia un método a una petición HTTP GET y a una ruta concreta que se debe especificar como un parámetro de la propia anotación.

Ejemplo completo

Para disponer de un endpoint bajo la ruta /hello que responda a una petición GET, bastaría con completar el Controlador HelloController de la siguiente forma:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
package dev.juanfbermejo.SpringBootHelloWorld;  
  
import org.springframework.web.bind.annotation.GetMapping;  
import org.springframework.web.bind.annotation.RestController;  
  
@RestController  
public class HelloController {  
  
    @GetMapping("/hello")  
    public String hello() {  
        return "Hello World from Spring Boot!";  
    }  
  
}

Prueba de la aplicación

Para probar la aplicación y ver el HelloWorld bastaría con ejecutar en nuestro IDE la clase anotada con SpringBootApplication.

En la consola veremos aparecer varios logs que nos indicarán:

  • Inicialización del servidor web (Tomcat por defecto) y el puerto en el que estará escuchando para recibir las peticiones (8080 por defecto)
  • Inicialización correcta de la propia aplicación.

En ese momento, podremos abrir un navegador web e intentar cargar la url http://localhost:8080/hello lo cual realiza por defecto una petición GET a la ruta, devolviendo en la pantalla el texto de HelloWorld.

Hello World con Spring Boot en el navegador

Conclusiones

Montar un Hello World en Spring Boot es rápido y sencillo, y un buen punto de partida para entender las piezas que lo hacen posible. Las anotaciones son uno de los pilares del framework, y dominar su significado permite construir aplicaciones más limpias, expresivas y mantenibles.