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:
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
- Añade una nueva propiedad
app.description
en el archivoapplication.properties
. - Modifica la clase
AppConfig
para inyectar y utilizar esta nueva propiedad. - Actualiza el controlador
ConfigController
para devolver la descripción de la aplicación en la respuesta.
Solución
- Añade la propiedad en
application.properties
:
- 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); } }
- 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
- ¿Qué es Spring Boot?
- Configuración de tu Entorno de Desarrollo
- Creando tu Primera Aplicación Spring Boot
- Entendiendo la Estructura del Proyecto Spring Boot
Módulo 2: Conceptos Básicos de Spring Boot
- Anotaciones de Spring Boot
- Inyección de Dependencias en Spring Boot
- Configuración de Spring Boot
- Propiedades de Spring Boot
Módulo 3: Construyendo Servicios Web RESTful
- Introducción a los Servicios Web RESTful
- Creando Controladores REST
- Manejo de Métodos HTTP
- Manejo de Excepciones en REST
Módulo 4: Acceso a Datos con Spring Boot
- Introducción a Spring Data JPA
- Configuración de Fuentes de Datos
- Creación de Entidades JPA
- Uso de Repositorios de Spring Data
- Métodos de Consulta en Spring Data JPA
Módulo 5: Seguridad en Spring Boot
- Introducción a Spring Security
- Configuración de Spring Security
- Autenticación y Autorización de Usuarios
- Implementación de Autenticación JWT
Módulo 6: Pruebas en Spring Boot
- Introducción a las Pruebas
- Pruebas Unitarias con JUnit
- Pruebas de Integración
- Simulación con Mockito
Módulo 7: Funciones Avanzadas de Spring Boot
Módulo 8: Despliegue de Aplicaciones Spring Boot
Módulo 9: Rendimiento y Monitoreo
- Ajuste de Rendimiento
- Monitoreo con Spring Boot Actuator
- Uso de Prometheus y Grafana
- Gestión de Registros y Logs