Propiedades de la aplicación y perfiles
Externalice la configuración con application.properties/yml, defina perfiles e inyecte valores con @Value y @ConfigurationProperties.
Propiedades de la aplicación y perfiles es una lección gratuita de Java Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Java Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Java Academy incluye 4 lecciones en total.
application.properties frente a application.yml
Spring Boot lee la configuración desde src/main/resources/application.properties o application.yml. YAML admite una configuración jerárquica sin repetir las claves; ambos ofrecen las mismas funcionalidades.
# application.properties:
server.port=8080
spring.datasource.url=jdbc:postgresql://localhost/mydb
spring.jpa.hibernate.ddl-auto=validate
# Equivalent application.yml:
server:
port: 8080
spring:
datasource:
url: jdbc:postgresql://localhost/mydb
jpa:
hibernate:
ddl-auto: validateInyectar valores con @Value
Use @Value("${property.key}") para inyectar una sola propiedad. Añada un valor predeterminado con ${key:default}. Se admiten expresiones SpEL.
@Service
public class PricingService {
@Value("${pricing.vat-rate:0.20}")
private double vatRate;
@Value("${app.name}")
private String appName;
}@ConfigurationProperties para un enlace con tipos seguros
Vincule un grupo de propiedades relacionadas a un record o una clase de Java anotados con @ConfigurationProperties. Se admiten anotaciones de validación.
@ConfigurationProperties(prefix = "app.mail")
public record MailProperties(
@NotBlank String host,
@Min(1) @Max(65535) int port,
boolean ssl
) {}
// Bind in Spring Boot 3: @EnableConfigurationProperties(MailProperties.class)Perfiles: definir entornos
Los perfiles permiten tener configuraciones específicas para cada entorno. Defina beans o propiedades que solo estén activos cuando lo esté un perfil determinado.
# application-dev.properties (active when profile=dev):
spring.datasource.url=jdbc:h2:mem:testdb
logging.level.com.example=DEBUG
# application-prod.properties (active when profile=prod):
spring.datasource.url=jdbc:postgresql://prod-db/app
logging.level.com.example=WARNActivar perfiles
Active un perfil mediante application.properties, una variable de entorno, una propiedad del sistema o la propiedad SPRING_PROFILES_ACTIVE de Spring Boot.
# application.properties:
spring.profiles.active=dev
# Or environment variable:
export SPRING_PROFILES_ACTIVE=prod
# Or JVM argument:
java -Dspring.profiles.active=prod -jar app.jar@Profile en los beans
Anote un @Bean o un @Component con @Profile("prod") para registrarlo únicamente cuando el perfil correspondiente esté activo.
@Configuration
public class DataSourceConfig {
@Bean @Profile("dev")
public DataSource h2DataSource() { return new EmbeddedDatabaseBuilder().build(); }
@Bean @Profile("prod")
public DataSource postgresDataSource() { return DataSourceBuilder.create().url(prodUrl).build(); }
}Grupos de perfiles (Spring Boot 2.4+)
Agrupe varios perfiles bajo un mismo nombre. Al activar el grupo, se activan simultáneamente todos los perfiles incluidos.
# application.properties:
spring.profiles.group.production=prod,metrics,cloudConfiguración externalizada con variables de entorno
Spring Boot asigna automáticamente las variables de entorno a las propiedades. DB_HOST se asigna a db.host (vinculación flexible). Es ideal para implementaciones con Docker y Kubernetes.
# application.properties:
spring.datasource.url=${DB_URL}
spring.datasource.username=${DB_USER}
spring.datasource.password=${DB_PASS}Prioridad de sobrescritura de propiedades
Las propiedades se aplican en este orden de prioridad: argumentos de la línea de comandos > variables de entorno > archivos específicos del perfil > application.properties > valores predeterminados. Las fuentes de mayor prioridad sobrescriben las de menor prioridad.
Cifrado de propiedades sensibles con Jasypt
Los valores sensibles, como las contraseñas, se pueden cifrar con Jasypt Spring Boot. Almacene el valor cifrado en las propiedades; Jasypt lo descifra al iniciar mediante una clave maestra proporcionada como argumento de la JVM.
# application.properties:
spring.datasource.password=ENC(k9r/2dfhXPQz+2jR8yzUYw==)
# JVM arg:
java -Djasypt.encryptor.password=masterSecret -jar app.jarArchivos YAML con varios documentos
Los archivos YAML admiten varios documentos separados por ---. Use spring.config.activate.on-profile dentro de cada documento para configurar perfiles específicos directamente en el archivo.
server:
port: 8080
---
spring:
config:
activate:
on-profile: prod
server:
port: 443Comprobación rápida
¿Qué anotación vincula un grupo de propiedades relacionadas a una clase Java con seguridad de tipos?
Resumen
Use application.properties / application.yml para la configuración. @Value para valores individuales; @ConfigurationProperties para grupos. Los perfiles separan los entornos. Las variables de entorno sobrescriben las propiedades, algo esencial para los contenedores.
Preguntas frecuentes
¿La lección «Propiedades de la aplicación y perfiles» es gratis?
Sí — el texto completo de «Propiedades de la aplicación y perfiles» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Java Academy, actualiza a CoddyKit PRO. El curso de Java Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Propiedades de la aplicación y perfiles»?
Externalice la configuración con application.properties/yml, defina perfiles e inyecte valores con @Value y @ConfigurationProperties. Practicas Java Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Java Academy?
No se requiere experiencia previa. Java Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Propiedades de la aplicación y perfiles»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Java Academy?
Sí. Cada lección de Java Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Autoconfiguración y starters de Spring Boot
- Propiedades de la aplicación y perfiles
- Inyección de beans: @Component, @Service, @Repository
- Inyección por constructor y dependencias circulares