Spring Boot YAML vs Properties: Comparacion de Configuracion y Preguntas de Entrevista 2026
Comparacion detallada entre YAML y Properties en Spring Boot. Sintaxis, gestion de perfiles, estructuras de datos y preguntas de entrevista tecnica.

Spring Boot soporta dos formatos de configuracion nativos: YAML (application.yml) y Properties (application.properties). Ambos logran el mismo objetivo, pero difieren en sintaxis, legibilidad y casos de uso especificos. Esta comparacion desglosa las diferencias practicas y cubre las preguntas de entrevista que surgen sobre la configuracion externalizada de Spring Boot.
Usar YAML para proyectos con configuracion profundamente anidada o multiples perfiles. Usar Properties para configuraciones planas simples o cuando el equipo no esta familiarizado con la sintaxis YAML.
Comparacion de Sintaxis Entre YAML y Properties
La diferencia mas visible es como cada formato representa datos jerarquicos. Los archivos Properties usan notacion de puntos en cada linea, mientras que YAML usa indentacion para expresar anidamiento.
# application.properties
server.port=8080
server.servlet.context-path=/api
spring.datasource.url=jdbc:postgresql://localhost:5432/mydb
spring.datasource.username=admin
spring.datasource.password=${DB_PASSWORD}
spring.jpa.hibernate.ddl-auto=validate
spring.jpa.show-sql=falseLa configuracion YAML equivalente agrupa visualmente las configuraciones relacionadas:
# application.yml
server:
port: 8080
servlet:
context-path: /api
spring:
datasource:
url: jdbc:postgresql://localhost:5432/mydb
username: admin
password: ${DB_PASSWORD}
jpa:
hibernate:
ddl-auto: validate
show-sql: falseYAML reduce la repeticion cuando multiples propiedades comparten el mismo prefijo. En el archivo properties, spring.datasource aparece tres veces, mientras que YAML lo declara una sola vez.
Gestion de Perfiles en la Configuracion de Spring Boot
Los perfiles de Spring Boot permiten diferentes configuraciones para entornos de desarrollo, staging y produccion. Ambos formatos soportan perfiles, pero YAML los maneja de manera mas elegante.
Con archivos properties, se requieren archivos separados para cada perfil:
# application-dev.properties
server.port=8080
spring.datasource.url=jdbc:h2:mem:devdb
logging.level.root=DEBUG
# application-prod.properties
server.port=80
spring.datasource.url=jdbc:postgresql://prod-server:5432/proddb
logging.level.root=WARNYAML soporta sintaxis multi-documento dentro de un solo archivo usando el separador ---:
# application.yml
spring:
profiles:
active: dev
---
spring:
config:
activate:
on-profile: dev
server:
port: 8080
logging:
level:
root: DEBUG
---
spring:
config:
activate:
on-profile: prod
server:
port: 80
logging:
level:
root: WARNDesde Spring Boot 2.4, la propiedad spring.config.activate.on-profile reemplazo la sintaxis anterior spring.profiles. La documentacion de Spring Boot cubre la activacion de perfiles en detalle.
Listas y Estructuras de Datos Complejas
YAML sobresale en la representacion de listas y estructuras anidadas. Esto importa para configuraciones como reglas de seguridad, mapeos CORS o beans personalizados.
# application.yml
app:
security:
allowed-origins:
- https://sharpskill.dev
- https://api.sharpskill.dev
cors:
allowed-methods:
- GET
- POST
- PUT
- DELETE
jwt:
secret: ${JWT_SECRET}
expiration-ms: 86400000El equivalente en properties requiere notacion de indice:
# application.properties
app.security.allowed-origins[0]=https://sharpskill.dev
app.security.allowed-origins[1]=https://api.sharpskill.dev
app.security.cors.allowed-methods[0]=GET
app.security.cors.allowed-methods[1]=POST
app.security.cors.allowed-methods[2]=PUT
app.security.cors.allowed-methods[3]=DELETE
app.security.jwt.secret=${JWT_SECRET}
app.security.jwt.expiration-ms=86400000Agregar un nuevo origen al archivo YAML significa simplemente agregar una linea. En properties, cada indice existente debe permanecer correcto, y la nueva entrada necesita el siguiente numero de indice.
¿Listo para aprobar tus entrevistas de Spring Boot?
Practica con nuestros simuladores interactivos, flashcards y tests técnicos.
Configuracion Type-Safe con @ConfigurationProperties
Spring Boot 3.4 vincula valores de configuracion a clases Java a traves de @ConfigurationProperties. Ambos formatos funcionan de manera identica con esta anotacion.
import org.springframework.boot.context.properties.ConfigurationProperties;
import java.util.List;
@ConfigurationProperties(prefix = "app.security")
public record AppSecurityProperties(
List<String> allowedOrigins,
CorsConfig cors,
JwtConfig jwt
) {
public record CorsConfig(List<String> allowedMethods) {}
public record JwtConfig(String secret, long expirationMs) {}
}El binding relajado de Spring Boot convierte automaticamente entre diferentes convenciones de nomenclatura. La propiedad app.security.allowed-origins se vincula a allowedOrigins independientemente de si la fuente es YAML o properties.
import org.springframework.context.annotation.Configuration;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
@Configuration
@EnableConfigurationProperties(AppSecurityProperties.class)
public class SecurityConfig {
private final AppSecurityProperties securityProperties;
public SecurityConfig(AppSecurityProperties securityProperties) {
this.securityProperties = securityProperties;
}
// Configuracion CORS usando securityProperties.cors().allowedMethods()
}Para mas informacion sobre patrones de configuracion de Spring Security, consultar el modulo de fundamentos de Spring Security.
Preguntas Comunes de Entrevista sobre Configuracion de Spring Boot
La configuracion es un tema frecuente en las entrevistas de Spring Boot. Los entrevistadores evaluan la comprension de la configuracion externalizada, configuraciones especificas del entorno y binding de propiedades.
Pregunta: Cual es el orden de precedencia para las fuentes de configuracion?
Spring Boot carga la configuracion desde multiples fuentes en un orden especifico. Las fuentes de mayor precedencia sobrescriben las de menor:
- Argumentos de linea de comandos (
--server.port=9000) - Propiedades del sistema Java (
-Dserver.port=9000) - Variables de entorno del sistema operativo (
SERVER_PORT=9000) - Properties especificas del perfil (
application-{profile}.yml) - Properties de la aplicacion (
application.ymloapplication.properties) - Anotaciones
@PropertySource - Propiedades por defecto via
SpringApplication.setDefaultProperties
Un candidato que conoce este orden demuestra comprension de como Spring Boot resuelve valores conflictivos.
Pregunta: Cuando elegir properties sobre YAML?
Los archivos properties tienen ventajas en situaciones especificas:
- Soporte IDE: Algunos IDE antiguos proporcionan mejor autocompletado para archivos
.properties - Familiaridad del equipo: La sintaxis properties es mas simple para desarrolladores nuevos en Spring Boot
- Valores de una sola linea: Las configuraciones planas sin anidamiento no ganan nada con YAML
- Integracion de herramientas de build: El filtrado de recursos de Maven y Gradle funciona directamente con properties
YAML funciona mejor cuando:
- La configuracion tiene anidamiento profundo (tres o mas niveles)
- Multiples perfiles pertenecen a un solo archivo
- Las listas requieren modificaciones frecuentes
- La legibilidad importa para configuraciones complejas
Pregunta: Como manejar valores de configuracion sensibles?
Nunca hacer commit de secretos al control de versiones. Spring Boot proporciona varios enfoques:
# application.yml - referencia variable de entorno
spring:
datasource:
password: ${DB_PASSWORD}Para sistemas de produccion, Spring Cloud Config Server o HashiCorp Vault proporcionan gestion centralizada de secretos. La guia de monitoreo de Actuator cubre la seguridad de endpoints sensibles.
Validacion de Configuracion en Spring Boot 3.4
Spring Boot valida las clases @ConfigurationProperties al inicio cuando se combinan con anotaciones de Jakarta Bean Validation.
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Positive;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.validation.annotation.Validated;
@Validated
@ConfigurationProperties(prefix = "app.database")
public record DatabaseProperties(
@NotBlank String url,
@NotBlank String username,
@Positive int poolSize
) {}Si app.database.pool-size falta o es negativo, la aplicacion falla rapidamente durante el inicio con un mensaje de error claro. Esta validacion funciona de manera identica para fuentes YAML y properties.
Archivos de Configuracion Especificos del Entorno
Spring Boot 3.4 soporta ubicaciones de archivos de configuracion adicionales mas alla del src/main/resources por defecto. La propiedad spring.config.import carga archivos externos:
# application.yml
spring:
config:
import:
- optional:file:./config/
- optional:configserver:http://config-server:8888El prefijo optional: previene el fallo del inicio cuando el archivo no existe. Este patron habilita el desarrollo local con valores por defecto mientras produccion obtiene la configuracion desde un servidor central.
| Caracteristica | YAML | Properties |
|---|---|---|
| Configuracion anidada | Jerarquia nativa | Notacion de puntos |
| Multi-perfil en un archivo | Soportado via --- | Requiere archivos separados |
| Sintaxis de listas | Arrays YAML nativos | Notacion de indice [0], [1] |
| Comentarios | # en cualquier linea | # o ! en cualquier linea |
| Autocompletado IDE | Bueno en IntelliJ, VS Code | Excelente en todos los IDE |
| Curva de aprendizaje | Requiere conocimiento YAML | Minima |
¡Empieza a practicar!
Pon a prueba tu conocimiento con nuestros simuladores de entrevista y tests técnicos.
Puntos Clave para la Configuracion de Spring Boot
- YAML reduce la repeticion para configuraciones con prefijos compartidos y maneja listas de manera mas limpia
- Los archivos properties funcionan bien para configuraciones planas y equipos menos familiarizados con la sintaxis YAML
- Spring Boot 3.4 trata ambos formatos de manera igual para binding y validacion de
@ConfigurationProperties - La gestion de perfiles en YAML mantiene los entornos relacionados en un solo archivo, reduciendo la proliferacion de archivos
- La precedencia de configuracion sigue un orden definido: argumentos de linea de comandos sobrescriben variables de entorno, que sobrescriben configuracion basada en archivos
- Los valores sensibles pertenecen a variables de entorno o sistemas de gestion de secretos, nunca a archivos bajo control de versiones
- Usar
spring.config.importpara cargar configuracion desde fuentes externas en entornos de produccion
¿Sabrías detectar el bug en Spring Boot?
Un fragmento real, un bug oculto, un intento al día. Sin cuenta para probar.

Escrito por
Anthony Fillion-MailletFundador de SharpSkill
Desarrollador fullstack desde hace más de 10 años. Dirige SharpSkill y responde por todo lo que se publica aquí.
Actualizado el 26 de agosto de 2026
Compartir
Artículos relacionados

Observabilidad en Spring Boot 2026: OpenTelemetry, Tracing Distribuido y Preguntas de Entrevista
Guía completa sobre observabilidad en Spring Boot con OpenTelemetry y tracing distribuido. Configuración OTLP, Observation API, propagación de contexto y preguntas técnicas para entrevistas backend.

Logs estructurados en Spring Boot 2026: JSON para producción con Logback y OpenTelemetry
Guía completa de logs estructurados en Spring Boot 4.x. Soporte JSON nativo, starter OpenTelemetry, tracing MDC e integración ELK Stack para observabilidad en producción.

Spring Kafka: arquitectura event-driven con consumidores resilientes
Guía completa de Spring Kafka para arquitecturas event-driven. Configuración, consumidores resilientes, políticas de retry, dead letter queues y patrones de producción para aplicaciones distribuidas.