0Pricing
Java Academy · Lección

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: validate

Inyectar 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=WARN

Activar 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,cloud

Configuració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.jar

Archivos 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: 443

Comprobació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

  1. Autoconfiguración y starters de Spring Boot
  2. Propiedades de la aplicación y perfiles
  3. Inyección de beans: @Component, @Service, @Repository
  4. Inyección por constructor y dependencias circulares
← Volver a Java Academy