Guía práctica para la creación y configuración de proyectos Spring Boot

Spring Boot se ha consolidado como el framework estándar para el desarrollo de aplicaciones Java modernas debido a su capacidad para simplificar la configuración inicial y el despliegue. A continuación, se detalla el proceso para estructurar un proyecto base, configurar sus propiedades esenciales y desarrollar una funcionalidad interactiva simple.

1. Estructura fundamental del proyecto

Un proyecto de Spring Boot bien organizado debe minimizar las dependencias para mantener la ligereza. La configuración básica suele gestionarse a través de un archivo pom.xml (en Maven) que incluye al menos el spring-boot-starter-web para capacidades REST y spring-boot-starter-thymeleaf para el renderizado de vistas.

La organización de dierctorios recomendada sigue el estándar de Maven:

  • src/main/java: Contiene la lógica de negocio y controladores.
  • src/main/resources: Alberga archivos de configuración y plantillas HTML.
  • static/: Para recursos como CSS y JavaScript.
  • templates/: Para archivos de Thymeleaf.

2. Configuración del entorno (application.properties)

El archivo application.properties es el núcleo de la configuración declarativa. Aquí se definen aspectos críticos como el puerto del servidor y la codificación de caracteres para evitar errores comunes en la web.

# Configuración del servidor
server.port=8081

# Forzar codificación UTF-8 para evitar problemas con caracteres especiales
server.servlet.encoding.charset=UTF-8
server.servlet.encoding.force=true

# Desactivar caché de plantillas para desarrollo (permite ver cambios en caliente)
spring.thymeleaf.cache=false

3. Implementación de la lógica de control

Para gestionar la interacción entre el usuario y el servidor, creamos un controlador que procese una solicitud de formulario. En este ejemplo, el controlador recibirá un nombre y devolverá un saludo personalizado.

package com.ejemplo.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class GestorSaludosController {

    /**
     * Carga la página principal con el formulario.
     */
    @GetMapping("/")
    public String mostrarFormulario() {
        return "index";
    }

    /**
     * Procesa el nombre enviado y retorna la vista con el mensaje.
     */
    @PostMapping("/saludar")
    public String procesarSaludo(@RequestParam(name = "usuario") String nombre, Model modelo) {
        String mensajeFinal = "¡Hola, " + nombre + "! Bienvenido a Spring Boot.";
        modelo.addAttribute("resultado", mensajeFinal);
        return "index";
    }
}

4. Creación de la interfaz con Thymeleaf

Utilizamos Thymeleaf para integrar lógica de Java directamente en el HTML de forma segura y eficiente. El archivo index.html debe ubicarse en la carpeta src/main/resources/templates.


<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Aplicación de Saludos</title>
</head>
<body>
    <h2>Ingrese su información</h2>
    <form action="/saludar" method="post">
        <label for="usuario">Nombre:</label>
        <input type="text" id="usuario" name="usuario" required>
        <button type="submit">Enviar</button>
    </form>

    <div th:if="${resultado}" style="margin-top: 20px;">
        <p th:text="${resultado}"></p>
    </div>
</body>
</html>

5. Resolución de problemas comunes

Al iniciar en el desarrollo con Spring Boot, es frecuente enfrentarse a ciertos obstáculos técnicos:

  • Error 404 en rutas: Verifiqeu que la clase controladora esté dentro del mismo paquete o un subpaquete de la clase principal anotada con @SpringBootApplication.
  • Cambios no reflejados: Si modifica el HTML y no ve cambios, asegúrese de que la propiedad spring.thymeleaf.cache esté en false o reinicie el servicio.
  • Inyección de dependencias fallida: Compruebe que ha utliizado las anotaciones correctas como @Service, @Component o @Controller para que el contenedor de Spring pueda gestionar los beans.

Etiquetas: spring-boot java Thymeleaf web-development maven

Publicado el 9-13 23:22