En este tema, aprenderemos cómo configurar una aplicación Spring Boot. La configuración es una parte esencial de cualquier aplicación, ya que permite personalizar el comportamiento de la aplicación según las necesidades específicas. Spring Boot facilita la configuración mediante el uso de propiedades y archivos de configuración.
Contenido
Archivos de Configuración
Spring Boot utiliza principalmente dos archivos para la configuración:
application.properties
application.yml
application.properties
Este es el archivo de configuración más común y sencillo. Las propiedades se definen en 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 archivo utiliza el formato YAML, que es más legible y estructurado.
server: port: 8081 spring: datasource: url: jdbc:mysql://localhost:3306/mydb username: root password: secret
Propiedades Comunes de Spring Boot
A continuación, se presentan algunas propiedades comunes que se pueden configurar en Spring Boot:
Propiedad | Descripción |
---|---|
server.port |
Configura el puerto en el que la aplicación escucha. |
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. |
logging.level.root |
Nivel de registro para la aplicación. |
spring.jpa.show-sql |
Muestra las consultas SQL en la consola. |
Configuración de Perfiles
Spring Boot permite definir diferentes configuraciones para diferentes entornos (desarrollo, prueba, producción) mediante el uso de perfiles.
Definición de Perfiles
Puedes definir perfiles en los archivos de configuración utilizando el sufijo -<profile>
.
application-dev.properties
application-prod.properties
Activación de Perfiles
Para activar un perfil, puedes usar la propiedad spring.profiles.active
en el archivo application.properties
o pasarla como argumento al iniciar la aplicación.
O como argumento de línea de comandos:
Configuración Externa
Spring Boot permite cargar configuraciones desde fuentes externas como variables de entorno, argumentos de línea de comandos, y sistemas de configuración centralizados.
Variables de Entorno
Puedes definir propiedades de configuración como variables de entorno.
Argumentos de Línea de Comandos
Puedes pasar propiedades de configuración como argumentos al iniciar la aplicación.
Ejemplo Práctico
Vamos a crear una configuración básica para una aplicación Spring Boot que se conecta a una base de datos MySQL.
Paso 1: Crear el archivo application.properties
server.port=8080 spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=root spring.datasource.password=secret spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true
Paso 2: Crear una clase de configuración
package com.example.demo; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.jdbc.datasource.DriverManagerDataSource; import javax.sql.DataSource; @Configuration public class DataSourceConfig { @Bean public DataSource dataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/mydb"); dataSource.setUsername("root"); dataSource.setPassword("secret"); return dataSource; } }
Ejercicio Práctico
Ejercicio 1: Configuración Básica
- Crea un nuevo proyecto Spring Boot.
- Configura el archivo
application.properties
para que la aplicación se ejecute en el puerto9090
y se conecte a una base de datos PostgreSQL. - Define las propiedades necesarias para la conexión a la base de datos.
Solución
server.port=9090 spring.datasource.url=jdbc:postgresql://localhost:5432/mydb spring.datasource.username=postgres spring.datasource.password=secret spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true
Ejercicio 2: Configuración de Perfiles
- Crea dos archivos de configuración:
application-dev.properties
yapplication-prod.properties
. - En
application-dev.properties
, configura la base de datos para que se conecte a una base de datos H2 en memoria. - En
application-prod.properties
, configura la base de datos para que se conecte a una base de datos MySQL. - Activa el perfil
dev
por defecto.
Solución
application-dev.properties
spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password=password spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true
application-prod.properties
spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=root spring.datasource.password=secret spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true
application.properties
Conclusión
En esta sección, hemos aprendido cómo configurar una aplicación Spring Boot utilizando archivos de configuración, propiedades comunes, perfiles y configuraciones externas. La configuración adecuada es crucial para el correcto funcionamiento y personalización de una aplicación. En el próximo módulo, exploraremos cómo construir 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