SpringBoot: Introducción y entorno

Descubre cómo configurar y preparar el entorno para desarrollar aplicaciones con Spring Boot, simplificando proyectos Java empresariales.

Aprende SpringBoot GRATIS y certifícate

Introducción y entorno de Spring Boot

Spring Boot representa una evolución natural del ecosistema Spring, diseñado para simplificar el desarrollo de aplicaciones Java empresariales. Esta tecnología elimina gran parte de la configuración manual tradicionalmente asociada con Spring Framework, permitiendo a los desarrolladores centrarse en la lógica de negocio en lugar de en detalles de configuración.

¿Qué es Spring Boot?

Spring Boot es un framework de desarrollo que facilita la creación de aplicaciones Java independientes y listas para producción. Su filosofía se basa en el principio de "convención sobre configuración", lo que significa que proporciona configuraciones predeterminadas sensatas que funcionan en la mayoría de casos de uso.

La principal ventaja de Spring Boot radica en su capacidad para autoconfiguración. El framework analiza las dependencias presentes en el proyecto y configura automáticamente los componentes necesarios. Por ejemplo, si detecta una dependencia de base de datos H2 en el classpath, configurará automáticamente una fuente de datos en memoria.

Características fundamentales

Aplicaciones independientes

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 como Tomcat o Jetty, ya que viene integrado.

@SpringBootApplication
public class MiAplicacionApplication {
    public static void main(String[] args) {
        SpringApplication.run(MiAplicacionApplication.class, args);
    }
}

Starters 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:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

Este starter incluye automáticamente Spring MVC, Tomcat embebido, Jackson para JSON, y otras dependencias relacionadas con el desarrollo web.

Configuración mediante propiedades

Spring Boot utiliza archivos de configuración externa para personalizar el comportamiento de la aplicación. El archivo application.properties o application.yml permite modificar configuraciones sin cambiar código.

server.port=8080
spring.datasource.url=jdbc:h2:mem:testdb
spring.jpa.show-sql=true

Preparación del entorno de desarrollo

Requisitos del sistema

Para trabajar con Spring Boot necesitas tener instalado Java Development Kit (JDK) versión 17 o superior. Spring Boot 3.5 requiere como mínimo Java 17, aprovechando las características modernas del lenguaje.

Herramientas de construcción

Spring Boot es compatible con las principales herramientas de construcción de Java:

Maven es la opción más común y utiliza un archivo pom.xml para gestionar dependencias:

<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:

plugins {
    id 'org.springframework.boot' version '3.5.0'
    id 'io.spring.dependency-management' version '1.1.0'
    id 'java'
}

Creación de proyectos

Spring Initializr es la herramienta oficial para generar proyectos Spring Boot. Disponible en https://start.spring.io, permite seleccionar dependencias, versiones y configuraciones básicas del proyecto.

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 de un proyecto Spring Boot

Un proyecto típico de Spring Boot sigue la estructura estándar de Maven:

src/
├── main/
│   ├── java/
│   │   └── com/ejemplo/aplicacion/
│   │       └── AplicacionApplication.java
│   └── resources/
│       ├── application.properties
│       ├── static/
│       └── templates/
└── test/
    └── java/

La clase principal debe estar anotada con @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

Configuración y perfiles

Archivos de configuración

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:

# Configuración del servidor
server.port=8090
server.servlet.context-path=/api

# Configuración de logging
logging.level.com.ejemplo=DEBUG
logging.file.name=aplicacion.log

Perfiles de configuración

Los perfiles permiten tener diferentes configuraciones para distintos entornos. Puedes crear archivos específicos como application-desarrollo.properties o application-produccion.properties.

# application-desarrollo.properties
spring.datasource.url=jdbc:h2:mem:devdb
spring.jpa.show-sql=true

# application-produccion.properties
spring.datasource.url=jdbc:mysql://localhost:3306/proddb
spring.jpa.show-sql=false

Para activar un perfil específico, utiliza la propiedad spring.profiles.active:

spring.profiles.active=desarrollo

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:

java -jar mi-aplicacion-1.0.0.jar

Esta aproximación elimina la necesidad de instalar y configurar servidores de aplicaciones externos, facilitando tanto el desarrollo como el despliegue en diferentes entornos.

Empezar curso de SpringBoot

Lecciones de este módulo de SpringBoot

Lecciones de programación del módulo Introducción y entorno del curso de SpringBoot.