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

AlcanceDescripción
singletonUna instancia por contexto Spring (predeterminado)
prototypeNueva instancia por inyección/solicitud
requestUna instancia por solicitud HTTP
sessionUna 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ónPropósito
@SpringBootApplicationPunto de entrada, habilita auto-config
@RestControllerManeja peticiones HTTP, devuelve JSON
@ServiceComponente de lógica de negocio
@RepositoryComponente de acceso a datos
@ComponentBean genérico gestionado por Spring
@AutowiredInyectar dependencias (preferir constructor)
@ValueInyectar valores de propiedades
@ConfigurationPropertiesVincular propiedades a una clase