Spring Boot🍃 : Introducción
¿Qué es Spring Boot y por qué es tan utilizado?
Spring Boot es una herramienta del ecosistema de Spring que facilita enormemente la creación de aplicaciones Java al eliminar la complejidad de configuración inicial y ofrecer soluciones predefinidas para tareas comunes. Esto permite centrarse directamente en el desarrollo de la lógica de negocio.
Una características útil de Spring Boot es que ofrece dependencias de “inicio” que ayudan a simplificar la configuración de compilación para que pueda crear rápidamente aplicaciones Spring de nivel de producción.
En resumen, Spring Boot simplifica la creación de aplicaciones independientes utilizando el framework Spring al crear automáticamente configuraciones repetitivas para iniciar una aplicación.
¿Cómo funciona Spring Boot?
Piénsalo como un inicializador de proyectos, si vas a desarrollar aplicaciones Spring, como un backends REST, microservicios para un sitio web, entre otras cosas.
Spring Boot permite crear aplicaciones ejecutables que incluyen un servidor web embebido. Esto significa que no necesitas desplegar tu aplicación en un servidor externo ya que viene integrado.
1
2
3
4
5
6
@SpringBootApplication
public class MiAplicacionApplication {
public static void main(String[] args) {
SpringApplication.run(MiAplicacionApplication.class, args);
}
}
Starter para simplificar dependencias
Los Spring Boot Starters son descriptores de dependencias que agrupan las librerías necesarias para funcionalidades específicas. En lugar de gestionar múltiples dependencias individuales, puedes incluir un starter que se encarga de todo.
Ejemplo de starter para aplicaciones web:
1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Este starter incluye automáticamente Spring MVC, Tomcat embebido y otras dependencias relacionadas con el desarrollo web.
Requisitos del sistema
Para trabajar con Spring Boot necesitas tener instalado Java Development Kit (JDK) versión 17 o superior, aprovechando las características modernas del lenguaje.
Herramientas de construcción
Spring Boot es compatible con las principales herramientas de construcción (builders) de Java.
Maven es la opción más común y utiliza un archivo pom.xml
para gestionar dependencias:
1
2
3
4
5
6
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.5.0</version>
<relativePath/>
</parent>
Gradle ofrece una sintaxis más concisa y utiliza archivos build.gradle
:
1
2
3
4
5
plugins {
id 'org.springframework.boot' version '3.5.0'
id 'io.spring.dependency-management' version '1.1.0'
id 'java'
}
Creación de proyectos
Para generar proyectos Spring Boot, puedes usar la herramienta oficial Spring Boot Initializr. Se trata de un formulario web fácil de usar que puedes rellenar con información básica sobre tu proyecto. Ejemplo:
Los IDEs modernos como IntelliJ IDEA, Eclipse o Visual Studio Code incluyen integración directa con Spring Initializr, permitiendo crear proyectos desde el propio entorno de desarrollo.
Estructura básica de un proyecto Spring Boot
Un proyecto típico de Spring Boot sigue la estructura estándar de Maven:
1
2
3
4
5
6
7
8
9
10
11
src/
├── main/
│ ├── java/
│ │ └── com/ejemplo/aplicacion/
│ │ └── AplicacionApplication.java
│ └── resources/
│ ├── application.properties
│ ├── static/
│ └── templates/
└── test/
└── java/
La estructura estándar incluye:
src/main/java
: Contiene el código fuente principal del proyecto.src/main/resources
: Archivos de configuración y recursos estáticos.src/test/java
: Pruebas unitarias e integradas.
La clase principal debe estar con una anotación especial:
@SpringBootApplication
, que combina tres anotaciones esenciales:
@Configuration
: Indica que la clase puede contener definiciones de beans@EnableAutoConfiguration
: Habilita la configuración automática de Spring Boot@ComponentScan
: Escanea componentes en el paquete actual y subpaquetes
Las anotaciones son metadatos que se agregan al código usando el símbolo
@
y sirven para dar instrucciones adicionales al compilador, a las herramientas o al propio framework
Configuración y perfiles
Spring Boot busca configuración en varios formatos y ubicaciones. Los archivos de propiedades son la forma más directa de configurar la aplicación.
Archivos de configuración
Los archivos de propiedades, permiten personalizar el comportamiento de la aplicación. Los archivos application.properties
o application.yml
permite modificar configuraciones sin cambiar código. Ejemplo:
1
2
3
server.port=8080
spring.datasource.url=jdbc:h2:mem:testdb
spring.jpa.show-sql=true
Perfiles de configuración
Los perfiles permiten tener diferentes configuraciones para distintos entornos. Puedes crear archivos específicos como application-dev.properties
o application-production.properties
.
Ejemplo para un perfil de desarrollo:
1
2
spring.datasource.url=jdbc:h2:mem:devdb
spring.jpa.show-sql=true
Ejemplo para un perfil de producción:
1
2
spring.datasource.url=jdbc:mysql://localhost:3306/proddb
spring.jpa.show-sql=false
Para activar un perfil específico, se utiliza la propiedad spring.profiles.active
:
1
spring.profiles.active=dev
Servidor embebido y despliegue
Spring Boot incluye servidores web embebidos que simplifican enormemente el despliegue. Por defecto utiliza Apache Tomcat, pero puedes cambiarlo por Jetty o Undertow según tus necesidades.
La aplicación se ejecuta como un JAR ejecutable que contiene todas las dependencias necesarias:
1
java -jar mi-aplicacion-1.0.0.jar
Separación por capas
Para mantener un proyecto ordenado es fundamental separarlo en capas:
- Controller: Gestiona solicitudes HTTP.
- Service: Contiene lógica de negocio.
- Repository: Interactúa con la base de datos.
- Model/Entity: Representa los datos y estructuras principales.
Organización modular
Organiza cada capa en subpaquetes claros, por ejemplo:
1
2
3
4
5
com.ejemplo.app
├── controller
├── service
├── repository
└── model
Elecciones de dependencias esenciales
Cuando creas un proyecto con Spring Initializr, puedes agregar las dependencias desde el inicio para que se agreguen a nuestro archivo de configuración (pom.xml
si usas Maven o build.gradle
si usas Gradle).
Las dependencias mínimas para comenzar con un proyecto Spring Boot. Las esenciales suelen ser:
- Spring Web: proporciona las herramientas necesarias para construir aplicaciones web y servicios RESTful en Java.
- Spring Data JPA: este módulo simplifica enormemente el acceso a datos, especialmente al trabajar con bases de datos relacionales.
- Spring Boot DevTools: mejora la experiencia de desarrollo en Spring Boot, principalmente a través de reinicios automáticos de la aplicación al detectar cambios en el código y la recarga en vivo (LiveReload).
Si olvidate alguna, la puedes añadir manualmente al pom.xml
1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
Luego guardas los cambios y Maven las descarga automáticamente.