Volver a Spring Boot Básico
Introducción a Spring Boot
Spring Boot facilita la creación de aplicaciones Spring listas para producción con configuración mínima.
¿Qué es Spring Boot?
Spring Boot es un framework con opiniones construido sobre Spring Framework. Proporciona:
- Auto-configuración — configura automáticamente tu aplicación según las dependencias
- Servidor embebido — ejecuta Tomcat, Jetty o Undertow directamente
- Listo para producción — verificaciones de salud, métricas y configuración externalizada incluidas
- Dependencias Starter — conjuntos curados de dependencias para casos de uso comunes
Configuración del Proyecto con Spring Initializr
# Usando curl
curl https://start.spring.io/starter.zip \
-d type=maven-project \
-d language=java \
-d bootVersion=3.2.0 \
-d groupId=com.ejemplo \
-d artifactId=demo \
-d dependencies=web,data-jpa,postgresql \
-o demo.zip
O visita start.spring.io y selecciona:
- Proyecto: Maven
- Lenguaje: Java
- Spring Boot: 3.2.x
- Dependencias: Spring Web, Spring Data JPA, PostgreSQL Driver
Estructura del Proyecto
demo/
├── src/
│ ├── main/
│ │ ├── java/com/ejemplo/demo/
│ │ │ ├── DemoApplication.java ← punto de entrada
│ │ │ ├── controller/
│ │ │ ├── service/
│ │ │ ├── repository/
│ │ │ └── model/
│ │ └── resources/
│ │ ├── application.properties ← configuración
│ │ └── static/
│ └── test/
├── pom.xml
└── mvnw
Clase Principal de la Aplicación
package com.ejemplo.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication // combina @Configuration, @EnableAutoConfiguration, @ComponentScan
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
Propiedades de la Aplicación
# src/main/resources/application.properties
server.port=8080
spring.application.name=demo
# Base de datos
spring.datasource.url=jdbc:postgresql://localhost:5432/mibd
spring.datasource.username=postgres
spring.datasource.password=secreto
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
YAML Alternativo
# src/main/resources/application.yml
server:
port: 8080
spring:
application:
name: demo
datasource:
url: jdbc:postgresql://localhost:5432/mibd
username: postgres
password: secreto
jpa:
hibernate:
ddl-auto: update
show-sql: true
Inyección de Dependencias
Spring gestiona beans e inyecta dependencias automáticamente:
// Usando inyección por constructor (recomendada)
@Service
public class UsuarioServicio {
private final UsuarioRepositorio usuarioRepositorio;
public UsuarioServicio(UsuarioRepositorio usuarioRepositorio) {
this.usuarioRepositorio = usuarioRepositorio;
}
}
Alcances de Beans
| Alcance | Descripción |
|---|---|
singleton | Una instancia por contexto Spring (predeterminado) |
prototype | Nueva instancia por inyección/solicitud |
request | Una instancia por solicitud HTTP |
session | Una instancia por sesión HTTP |
Perfiles
# application-dev.properties
spring.datasource.url=jdbc:h2:mem:testdb
logging.level.root=DEBUG
# application-prod.properties
spring.datasource.url=jdbc:postgresql://servidor-prod:5432/mibd
logging.level.root=WARN
# Activar un perfil
java -jar app.jar --spring.profiles.active=prod
Ejecutar la Aplicación
# Con Maven
./mvnw spring-boot:run
# Compilar y ejecutar JAR
./mvnw clean package
java -jar target/demo-0.0.1-SNAPSHOT.jar
Resumen de Anotaciones Clave
| Anotación | Propósito |
|---|---|
@SpringBootApplication | Punto de entrada, habilita auto-config |
@RestController | Maneja peticiones HTTP, devuelve JSON |
@Service | Componente de lógica de negocio |
@Repository | Componente de acceso a datos |
@Component | Bean genérico gestionado por Spring |
@Autowired | Inyectar dependencias (preferir constructor) |
@Value | Inyectar valores de propiedades |
@ConfigurationProperties | Vincular propiedades a una clase |