En este tema, aprenderás sobre las propiedades de Spring Boot, cómo configurarlas y utilizarlas para personalizar el comportamiento de tu aplicación. Las propiedades de Spring Boot son una forma poderosa y flexible de gestionar la configuración de tu aplicación.

Contenido

¿Qué son las Propiedades de Spring Boot?

Las propiedades de Spring Boot son configuraciones que puedes definir para personalizar el comportamiento de tu aplicación. Estas propiedades se pueden definir en archivos de configuración, como application.properties o application.yml, y se pueden acceder en el código de tu aplicación.

Archivos de Configuración

Spring Boot soporta varios formatos de archivos de configuración, siendo los más comunes:

  • application.properties
  • application.yml

application.properties

Este es el formato más simple y común. Cada propiedad se define en una línea separada con el formato clave=valor.

server.port=8081
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret

application.yml

Este formato es más estructurado y legible, especialmente para configuraciones complejas.

server:
  port: 8081

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: secret

Tipos de Propiedades

Spring Boot proporciona una amplia gama de propiedades predefinidas que puedes utilizar para configurar diferentes aspectos de tu aplicación. Algunos ejemplos incluyen:

  • Servidor: Configuración del servidor embebido.

    • server.port: Puerto en el que el servidor escuchará.
    • server.servlet.context-path: Ruta base del contexto de la aplicación.
  • Base de Datos: Configuración de la fuente de datos.

    • spring.datasource.url: URL de la base de datos.
    • spring.datasource.username: Nombre de usuario de la base de datos.
    • spring.datasource.password: Contraseña de la base de datos.
  • Seguridad: Configuración de seguridad.

    • spring.security.user.name: Nombre de usuario predeterminado.
    • spring.security.user.password: Contraseña predeterminada.

Acceso a Propiedades en el Código

Puedes acceder a las propiedades definidas en los archivos de configuración directamente en tu código utilizando la anotación @Value o la clase Environment.

Usando @Value

La anotación @Value se utiliza para inyectar valores de propiedades en campos de clase.

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class MyComponent {

    @Value("${server.port}")
    private int serverPort;

    @Value("${spring.datasource.url}")
    private String datasourceUrl;

    // Métodos y lógica de la clase
}

Usando Environment

La clase Environment proporciona métodos para acceder a las propiedades.

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;

@Component
public class MyComponent {

    @Autowired
    private Environment env;

    public void printProperties() {
        String serverPort = env.getProperty("server.port");
        String datasourceUrl = env.getProperty("spring.datasource.url");
        System.out.println("Server Port: " + serverPort);
        System.out.println("Datasource URL: " + datasourceUrl);
    }
}

Ejemplo Práctico

Vamos a crear un ejemplo práctico donde configuraremos algunas propiedades y las utilizaremos en nuestra aplicación.

Paso 1: Configurar application.properties

Crea un archivo application.properties en el directorio src/main/resources y añade las siguientes propiedades:

app.name=MiAplicacion
app.version=1.0.0
server.port=8082

Paso 2: Acceder a las Propiedades en el Código

Crea una clase AppConfig para acceder a estas propiedades.

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class AppConfig {

    @Value("${app.name}")
    private String appName;

    @Value("${app.version}")
    private String appVersion;

    @Value("${server.port}")
    private int serverPort;

    public void printConfig() {
        System.out.println("App Name: " + appName);
        System.out.println("App Version: " + appVersion);
        System.out.println("Server Port: " + serverPort);
    }
}

Paso 3: Ejecutar la Aplicación

Crea un controlador para probar la configuración.

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ConfigController {

    @Autowired
    private AppConfig appConfig;

    @GetMapping("/config")
    public String getConfig() {
        appConfig.printConfig();
        return "Check the console for the configuration details.";
    }
}

Ejercicio Práctico

Ejercicio

  1. Añade una nueva propiedad app.description en el archivo application.properties.
  2. Modifica la clase AppConfig para inyectar y utilizar esta nueva propiedad.
  3. Actualiza el controlador ConfigController para devolver la descripción de la aplicación en la respuesta.

Solución

  1. Añade la propiedad en application.properties:
app.description=Esta es una aplicación de ejemplo.
  1. Modifica la clase AppConfig:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class AppConfig {

    @Value("${app.name}")
    private String appName;

    @Value("${app.version}")
    private String appVersion;

    @Value("${server.port}")
    private int serverPort;

    @Value("${app.description}")
    private String appDescription;

    public void printConfig() {
        System.out.println("App Name: " + appName);
        System.out.println("App Version: " + appVersion);
        System.out.println("Server Port: " + serverPort);
        System.out.println("App Description: " + appDescription);
    }
}
  1. Actualiza el controlador ConfigController:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ConfigController {

    @Autowired
    private AppConfig appConfig;

    @GetMapping("/config")
    public String getConfig() {
        appConfig.printConfig();
        return "App Description: " + appConfig.getAppDescription();
    }
}

Conclusión

En esta sección, has aprendido sobre las propiedades de Spring Boot, cómo configurarlas y acceder a ellas en tu código. Las propiedades son una herramienta esencial para personalizar y gestionar la configuración de tu aplicación de manera flexible y eficiente. En el próximo módulo, profundizaremos en la creación de servicios web RESTful con Spring Boot.

Curso de Spring Boot

Módulo 1: Introducción a Spring Boot

Módulo 2: Conceptos Básicos de Spring Boot

Módulo 3: Construyendo Servicios Web RESTful

Módulo 4: Acceso a Datos con Spring Boot

Módulo 5: Seguridad en Spring Boot

Módulo 6: Pruebas en Spring Boot

Módulo 7: Funciones Avanzadas de Spring Boot

Módulo 8: Despliegue de Aplicaciones Spring Boot

Módulo 9: Rendimiento y Monitoreo

Módulo 10: Mejores Prácticas y Consejos

© Copyright 2024. Todos los derechos reservados