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.cacheesté enfalseo reinicie el servicio. - Inyección de dependencias fallida: Compruebe que ha utliizado las anotaciones correctas como
@Service,@Componento@Controllerpara que el contenedor de Spring pueda gestionar los beans.