Si comparas Spring Framework con un gran supermercado donde hay todo lo que puedas necesitar, entonces Spring Boot es un conjunto de cestas preparadas con productos ya seleccionados. Probablemente habrá varios kits típicos con lo que la gente compra más a menudo. Por ejemplo, pan, leche, mantequilla, trigo sarraceno, pechuga de pollo, agua mineral. En lugar de buscar todo eso por los pasillos, simplemente coges la cesta adecuada, la pagas y la usas. Spring Boot es una herramienta construida sobre Spring que se encargó de simplificar la creación de aplicaciones. Lo hace ofreciendo autoconfiguración, conjuntos preconfigurados de "starters" y servidores integrados. En pocas palabras, Spring Boot es un paquete cómodo que te ayuda a empezar a trabajar de inmediato, en vez de perder horas configurando.
¿Pero por qué? ¿Por qué no usar simplemente Spring Framework "a la antigua"?
Si aún no has escrito una gran aplicación Spring a mano, aquí va un breve repaso de lo que tendrías que hacer:
- Configurar las dependencias a mano (incluyendo un montón de XML o muchas anotaciones).
- Conectar el servidor de aplicaciones, por ejemplo Tomcat, por separado.
- Configurar delicadamente todos los módulos uno por uno.
Spring Boot simplifica este proceso gracias a las siguientes funciones clave:
- Autoconfiguración: nada de "¿dónde está mi configuración XML?". Spring Boot analizará tu proyecto y activará automáticamente las configuraciones necesarias.
- Starters (starters): conjuntos de dependencias ya listos con configuraciones razonables. Por ejemplo, ¿quieres un REST API? Añade
spring-boot-starter-web, ¡y todo funciona! - Servidores web integrados: Tomcat, Jetty o Undertow arrancan directamente desde la caja. Nada de "¿dónde se fue el servidor?".
- Funciones production-ready: integración con monitorización, gestión de métricas, comprobaciones de salud de la aplicación (Actuator) — todo ya incluido.
En el fondo, Spring Boot está hecho para desarrolladores perezosos... o sea, para desarrolladores listos que quieren centrarse en la lógica del negocio y no en la configuración.
Componentes principales de Spring Boot
Starters (starters) Los starters son como paquetes de ingredientes con los que puedes preparar un plato sin recorrer todo el supermercado. Si necesitas un REST API, simplemente añade el starter:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Los starters de Spring Boot ya contienen todas las dependencias necesarias (por ejemplo, Spring Web, Jackson para trabajar con JSON, etc.).
Algunos starters populares:
spring-boot-starter-data-jpa— para trabajar con bases de datos vía JPA.spring-boot-starter-security— para añadir autenticación y autorización.spring-boot-starter-test— para testear aplicaciones.
Autoconfiguración Spring Boot analiza qué dependencias tienes y aplica automáticamente las configuraciones necesarias. Por ejemplo, si usas spring-boot-starter-web, Spring Boot configura el Tomcat integrado, crea el DispatcherServlet y otros componentes web.
Ejemplo: si le has añadido a una clase la ruta de un controlador REST, Spring Boot ya sabe que se trata de una aplicación web y configurará el servidor:
@RestController
@RequestMapping("/api")
public class HelloController {
@GetMapping("/hello")
public String sayHello() {
return "Hello, Spring Boot!";
}
}
Servidores web integrados Spring Boot viene con servidores integrados como Tomcat. Esto te permite ejecutar la aplicación como una clase Java normal y no como un War desplegado en un servidor externo.
Ejemplo:
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
Al arrancar esta clase, Spring Boot levantará automáticamente el servidor en el puerto 8080 (por defecto).
Funciones production-ready Spring Boot Actuator te permite obtener métricas y monitorizar la aplicación. Los endpoints integrados dan información sobre el estado de la aplicación, métricas, uso de memoria y mucho más.
Ejemplo de inclusión de Actuator:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
Ventajas de Spring Boot
Principales pros
- Velocidad de desarrollo: la primera aplicación se puede montar literalmente en unos minutos.
- Facilidad de configuración: configuración vía
application.propertiesoapplication.yml(nada de XML). - Soporte para DevTools: greizing, reinicio automático al cambiar el código.
- Flexibilidad: si hace falta, puedes configurar todo manualmente igualmente.
REST API en 5 minutos Con Spring Boot crear un REST API requiere un esfuerzo mínimo. Aquí tienes un ejemplo:
@RestController
@RequestMapping("/api")
public class UserController {
@GetMapping("/users")
public List<String> getUsers() {
return List.of("Alice", "Bob", "Charlie");
}
}
Arranca la aplicación y Spring Boot hará todo lo demás. Ahora tienes un REST API que devuelve una lista de usuarios.
Microservicios Spring Boot parece hecho para microservicios. Desarrollo rápido, servidores integrados y soporte de Spring Cloud lo convierten en una herramienta ideal para construir arquitecturas escalables y tolerantes a fallos.
Spring Boot facilita el desarrollo
Ejemplo con autoconfiguración Supongamos que decides conectar una base de datos. Con Spring Framework tendrías que configurar la conexión a mano. Con Spring Boot basta con poner las opciones en application.properties:
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret
Spring Boot configurará automáticamente el DataSource, la conexión a la base de datos e incluso Hibernate.
Perfiles integrados A veces necesitas distintas configuraciones para desarrollo (dev) y producción (prod). Spring Boot soporta perfiles:
# application-dev.properties
server.port=8081
# application-prod.properties
server.port=80
Arranca la aplicación con el perfil que necesites:
java -jar myapp.jar --spring.profiles.active=prod
¿Cuándo usar Spring Boot?
Spring Boot encaja muy bien para:
- REST API y aplicaciones CRUD.
- Arquitectura de microservicios.
- Rapid Prototyping (desarrollo rápido de prototipos).
- Aplicaciones donde importa el functionality production-ready.
Sin embargo, si tu proyecto es muy pequeño y no requiere dependencias complejas, usar Spring Boot puede resultar excesivo.
Spring Boot es como una máquina de café para el desarrollador. Claro, puedes preparar el café a mano con filtro y mucha dedicación, pero ¿para qué, si puedes pulsar un botón y tener la bebida lista? En la próxima clase nos meteremos en la práctica: crearemos la primera aplicación Spring usando todas las capacidades de Spring Boot.
GO TO FULL VERSION