Entrada

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:

spring initializr spring initializr

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).

add dependencies add dependencies

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.

Esta entrada está licenciada bajo CC BY 4.0 por el autor.