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:
importar org.springframework.context.annotation.Configuration;
importar org.springframework.context.annotation.Profile;
@Configuration(proxyBeanMethods = false)
@Profile("producción")
configuración de producción de clase pública {
//...
}
importar org.springframework.context.annotation.Configuration
importar org.springframework.context.annotation.Profile
@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.