Spring MVC - Creación de proyectos

Publicado el 2025-04-19

Escrito por C. V. Charco

Introducción

En esta entrada vamos a contemplar la creación de un proyecto de Spring Boot desde cero con Spring Initializr desde el editor de código Visual Studio Code (en adelante Vscode).

Prerrequisitos

Actualmente podemos crear proyectos de Spring Boot de dos formas:

  • La primera consiste en navegar a la web oficial de Spring Initializr https://start.spring.io/ y configurar desde ahí el proyecto y descargarlo como un archivo comprimido el cual podremos abrir en nuestro editor.
  • La segunda forma (la que yo recomiendo) pasa por instalar la extensión de Spring Initializr en Vscode para facilitar la creación de proyectos de Spring Boot directamente desde el IDE. Para ello, vamos a agregar Spring Boot Extension Pack a nuestro editor.
Extensiones de Vscode para Spring

Creación del proyecto

Para comenzar el proyecto, abriremos Vscode y pulsaremos CTRL + SHIFT + P (o CMD + SHIFT + P en MAC) para abrir la paleta de comandos. Aquí escribiremos initializr y seleccionaremos la opción de crear un nuevo proyecto de Maven con Spring Initializr.

Spring Initializr en Vscode

A continuación, seleccionaremos la versión de Spring Boot (para este proyecto se está usando la versión 3.4.4) y luego elegiremos el lenguaje Java. Después se nos pedirá el nombre del paquete y del proyecto. En mi caso he puesto com.vcharco como nombre del paquete y ticketapi como nombre del proyecto. Ahora se nos pedirá indicar si queremos generar un jar o un war; seleccionaremos jar, ya que esta opción incluye el servidor web integrado y permite desplegar la aplicación de forma independiente. Por último, elegiremos la versión de Java. En nuestro caso escogeremos la versión 21, que es la última versión LTS a la fecha de escribir este post.

Una vez configuradas todas estas opciones procedemos a agregar las dependencias necesarias para nuestro proyecto. Por ahora solo necesitaremos las siguientes:

Dependencias para Spring MVC
  • Spring Web: Proporciona las funcionalidades esenciales para construir aplicaciones web, incluyendo soporte para servir contenido web, APIs RESTful y comunicación cliente-servidor.
  • Lombok: Es una biblioteca que reduce la cantidad de código boilerplate (repetitivo) en nuestras clases Java, como getters, setters, constructores y toString(), mediante el uso de anotaciones.
  • DevTools: Es un conjunto de herramientas para desarrolladores que facilita el proceso de desarrollo, ofreciendo funcionalidades como reinicio automático de la aplicación al detectar cambios, LiveReload para el navegador y configuración de propiedades específicas para el entorno de desarrollo.

Estructura del proyecto

Una vez creado el proyecto y abierto en nuestro editor, comprobamos que se ha generado una estructura de directorios extensa. A nosotros nos interesa por ahora todo lo que se encuentre contenido en src/main. Dentro de este directorio ubicaremos un directorio (o más bien un conjunto de ellos) que componen el nombre de nuestro proyecto y dentro encontramos la clase TicketapiApplication.java.

Estructura básica del proyecto Ticketapp

TicketapiApplication.java es la clase principal que arranca toda nuestra aplicación. Spring Boot la genera automáticamente cuando creamos el proyecto, y cumple una función muy específica y esencial.

package com.vcharco.ticketapi;

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

@SpringBootApplication
public class TicketapiApplication {

	public static void main(String[] args) {
		SpringApplication.run(TicketapiApplication.class, args);
	}

}
  1. La anotación @SpringBootApplication es una combinación de tres anotaciones:
  • @Configuration: marca esta clase como una clase de configuración de Spring.
  • @EnableAutoConfiguration: dice a Spring Boot que configure automáticamente los beans según las dependencias que detecte.
  • @ComponentScan: escanea el paquete actual y subpaquetes en busca de componentes como controladores, servicios, etc.

No te preocupes si todavía no comprendes qué es una clase de configuración, un Bean o un controlador, los iremos viendo a lo largo de la serie.

  1. Método main() es el punto de entrada de la aplicación. SpringApplication.run(...) arranca el servidor embebido (como Tomcat) y levanta el contexto de Spring.

En esta clase realmente no vamos a hacer nada más por ahora, pero resultaba necesario conocerla. Ahora vamos a proceder a crear una nueva clase que permita exponer un endpoint básico en el siguiente apartado.

Nuestro primer controlador

Para probar que nuestro proyecto está en marcha, necesitaremos arrancarlo y probar llamar algún endpoint. Un endpoint es una URL específica de nuestra API donde una aplicación cliente puede enviar peticiones para interactuar con el servidor (obtener, crear, actualizar o eliminar datos).

Para crear este controlador basta con agregar un nuevo archivo en la misma ubicación donde tenemos nuestra clase TicketapiApplication.java, solo que la llamaremos HelloController.java. Si ya has desarrollado APIs con Spring previamente te estarás tirando de los pelos al ubicar ahí el nuevo controlador, pero no te preocupes, esta no será la ubicación definitiva, ahora solo queremos crear un controlador muy básico de ejemplo que eliminaremos más adelante.

Una vez creado el archivo, escribiremos el siguiente contenido:

package com.vcharco.ticketapi;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

  @GetMapping
  public String hello() {
    return "Hola, mundo";
  }

}

Ahora arranqueremos la aplicación haciendo click en el botón de play que tiene forma de triángulo verde. Si no lo vemos, podemos pulsar la combinación CTRL + SHIFT + D (o CMD + SHIFT + D en Mac) y lo encontraremos en la parte superior izquierda.

Por último, vamos a abrir un navegador web y navegar a http://localhost:8080, que es la ruta donde Spring despliega por defecto nuestro proyecto. Nada más acceder debemos estar viendo el mensaje de hola, mundo.

Resultado de llamar al endpoint hello world

Hasta aquí en cuanto a la creación de proyectos en Spring Boot. En otras entradas contemplaremos cómo crear features, conectar una base de datos, configuraciones, estrategias de caché, logging, autenticación y mucho más. ¡No te lo pierdas!