Skip to content

Latest commit

 

History

History

25-Spring-Boot-Perfiles

// concepto

Los perfiles de Spring Boot permiten tener configuraciones distintas para distintos entornos (dev, test, prod) activadas dinámicamente, sin cambiar el código ni recompilar.

src/main/resources/
├── application.yml           ← configuración base (todos los entornos)
├── application-dev.yml       ← sobrescribe para dev
├── application-test.yml      ← sobrescribe para test
└── application-prod.yml      ← sobrescribe para producción

La configuración específica del perfil activo sobrescribe la base.

// key features

Activar un perfil:

# Variable de entorno
SPRING_PROFILES_ACTIVE=prod java -jar app.jar

# Argumento de línea de comandos
java -jar app.jar --spring.profiles.active=prod

# application.properties
spring.profiles.active=dev

@Profile en beans:

@Bean
@Profile("dev")
public DataSource h2DataSource() { ... }  // solo activo en dev

@Bean
@Profile("!dev")   // activo en todo excepto dev
public DataSource postgresDataSource() { ... }

@Bean
@Profile({"qa", "staging"})  // activo en qa O staging
public DataSource qaDataSource() { ... }

En tests:

@SpringBootTest
@ActiveProfiles("test")
class MiServicioTest { ... }

Varios perfiles simultáneos: spring.profiles.active=base,cloud,prod — los perfiles se acumulan y el último tiene mayor precedencia.

// ventajas
  • Un único artefacto para todos los entornos.
  • Configuración de entorno sin modificar el código.
  • @ActiveProfiles en tests para configuración específica de testing.
  • Soporte para perfiles anidados y acumulativos.

Ver ExpPerfiles.java, ExpConditionalOnProfile.java, ExpProfileGroups.java y ExpEnvironmentAbstraction.java para ejemplos ejecutables con @Profile, activación de perfiles y configuración por entorno.