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