Los perfiles de Spring brindan la capacidad de separar partes de la configuración de su aplicación y hacerlas accesibles solo en ciertos entornos. Cualquier @Component
, @Configuration
o @ConfigurationProperties
se puede marcar con una anotación @Profile
para restringir la carga, como se muestra en el siguiente ejemplo:
@Configuration(proxyBeanMethods = false) @Profile("producción") configuración de producción de clase pública { //... }
@Configuration(proxyBeanMethods = false) @Profile("producción") clase Configuración de producción { //... }
@ConfigurationProperties
se registran a través de la anotación
@EnableConfigurationProperties
en lugar de escanear automáticamente, el annotation
@Profile
debe establecerse en una clase marcada con la anotación
@Configuration
que contiene la anotación
@EnableConfigurationProperties
. En caso de que se analicen las anotaciones
@ConfigurationProperties
, la anotación
@Profile
se puede especificar para la clase misma, marcada con la anotación
@ConfigurationProperties
.
Puede utilizar la propiedad spring.profiles.active
para Environment
para especificar qué perfiles están activos. La propiedad se puede establecer de cualquiera de las formas descritas anteriormente en este capítulo. Por ejemplo, puede incluirlo como parte del archivo application.properties
, como se muestra en el siguiente ejemplo:
spring.profiles.active=dev,hsqldb
primavera:
perfiles:
activo: "dev,hsqldb"
También puede configurarlo en la línea de comando usando el siguiente parámetro: --spring.profiles.active=dev,hsqldb
.
Si no hay ningún perfil activo, se activará el perfil predeterminado. El nombre del perfil predeterminado es default
y se puede ajustar utilizando la propiedad spring.profiles.default
para Environment
, como se muestra en el siguiente ejemplo. :
spring.profiles.default=none
primavera:
perfiles:
predeterminado: "ninguno"
spring.profiles.active
y spring.profiles.default
solo se pueden utilizar en documentos que no sean de perfil. Esto significa que no se pueden incluir en archivos o documentos específicos del perfil activados usando spring.config.activate.on-profile
.
Por ejemplo, la configuración del segundo documento no es válida:
# este documento es válido
spring.profiles.active=prod
#---
# este documento no es válido
spring.config.activate.on-profile=prod
spring.profiles.active=métricas
# este documento es válido
primavera:
perfiles:
activo: "prod"
---
# este documento no es válido
primavera:
configuración:
activar:
en el perfil: "prod"
perfiles:
activo: "métricas"
Añadir perfiles activos
La propiedad spring.profiles.active
sigue las mismas reglas de ordenamiento que otras propiedades: la que tiene el PropertySource
más alto tiene la mayor prioridad. Esto significa que puede configurar perfiles activos en application.properties
y luego reemplazarlos usando un modificador de línea de comando.
A veces es útil tener propiedades que se agreguen a los perfiles activos en lugar de reemplazarlos. La propiedad spring.profiles.include
se puede utilizar para agregar perfiles activos además de los habilitados por la propiedad spring.profiles.active
. El punto de entrada SpringApplication
también tiene una API de Java para instalar perfiles adicionales. Consulte el método setAdditionalProfiles()
en la sección sobre SpringApplication.
Por ejemplo, si una aplicación se ejecuta con las siguientes propiedades, los perfiles público y local se activarán, incluso si se ejecuta utilizando el modificador --spring.profiles.active:
spring.profiles.include[0]=común
spring.profiles.include[1]=local
primavera:
perfiles:
incluir:
- "común"
- "local"
spring.profiles.active
,
spring.profiles.include
solo se puede usar en documentos, no relacionado con el perfil. Esto significa que no se puede incluir en archivos o documentos específicos del perfil activados usando
spring.config.activate.on-profile
.
Grupos de perfiles
A veces, los perfiles que se definen y utilizan en una aplicación son demasiado detallados y resultan engorrosos de usar. Por ejemplo, puede haber perfiles proddb
y prodmq
, que se utilizan para habilitar de forma independiente la funcionalidad de mensajería y base de datos.
La función Spring Boot ayuda con esto, que le permite definir grupos de perfiles. Un grupo de perfiles le permite definir un nombre lógico para un grupo de perfiles asociado.
Por ejemplo, podemos crear un grupo production
que consta de nuestros perfiles proddb
y prodmq
.
spring.profiles.group.production[0]=proddb
spring.profiles.group.production[1]=prodmq
primavera:
perfiles:
grupo:
producción:
- "prodb"
- "prodmq"
La aplicación ahora se puede iniciar usando --spring.profiles.active=production
para activar production
, proddb
y perfiles prodmq
a la vez.
Programa de instalación de perfiles
Puede configurar perfiles activos mediante programación llamando a SpringApplication.setAdditionalProfiles(…)
antes de ejecutar la aplicación. También puede activar perfiles utilizando la interfaz ConfigurableEnvironment
de Spring.
Archivos de configuración asociados a un perfil específico
Las opciones específicas del perfil tanto para application.properties
(o application.yml
) como para los archivos a los que se hace referencia mediante la anotación @ConfigurationProperties
se cuentan como archivos y descargados.
GO TO FULL VERSION