Cómo acceder aplicación- {} .properties perfil de archivos basado en el perfil activo

Avinash Gupta:

Tengo un requisito de acceso a archivo application.properties fuera de la ubicación del proyecto. Soy capaz de lograr lo mismo usando siguiente:

@Component
@PropertySources({
        @PropertySource(value = "file:${user.home}/file/path/application.properties", ignoreResourceNotFound = false) })
public class PropConfig implements InitializingBean {

Ahora, quiero lograr lo mismo usando el perfil activo. Si el perfil dev está activo, necesito a buscar application-dev.properties, si el perfil de la etapa está activa, quiero a buscar application-stage.properties y así sucesivamente.

Estoy utilizando la plataforma Windows y JAVA 8 con 1.5.x primavera de arranque

He intentado establecer el perfil activo en el archivo application.properties. Pero no funciona

spring.profiles.active=dev
Marko Previsic:

Solución para la primavera de arranque 1.5.x

Puede añadir la carpeta como un lugar propio de configuración mediante la ejecución de su aplicación con el siguiente argumento JVM:

-Dspring.config.location=file:${user.home}/file/path/

Con este argumento JVM configurado, todos los application-{profile}.propertiesarchivos dentro de esta carpeta se resolverán automáticamente.

(Alternativamente, si usted prefiere utilizar las variables de entorno en lugar de argumentos de JVM, puede hacer lo mismo mediante el establecimiento de la variable de entorno SPRING_CONFIG_LOCATION, por ejemplo mediante el uso siguiente comando en el terminal de Linux: export SPRING_CONFIG_LOCATION=file:${user.home}/file/path/)

Ahora, si usted tiene un archivo application-dev.propertiesen la carpeta de configuración a medida, que debería ser suficiente para activar el perfil por defecto en su application.propertiesarchivo agregando:

spring.profiles.active=dev

Por último, la @PropertySourcesanotación es redundante y puede eliminarla:

@Component
public class PropConfig implements InitializingBean {

Referencia: https://docs.spring.io/spring-boot/docs/1.5.0.RELEASE/reference/html/boot-features-external-config.html


Solución para la primavera de arranque 2.X

El enfoque es fundamentalmente el mismo que para la primavera de arranque 1.5.x, pero con una ligera diferencia.

En la primavera de arranque 2.X el comportamiento del spring.config.locationargumento es un poco diferente que en versiones anteriores. La diferencia es que en la primavera de arranque 2.X el spring.config.locationargumento anula las ubicaciones de configuración por defecto:

Cuando ubicaciones de configuración personalizados se configuran mediante spring.config.location, que sustituyen a las ubicaciones predeterminadas. (Fuente: Documentación del resorte de arranque )

Desde la creación de este argumento a su carpeta de configuración a medida dejaría sin efecto las ubicaciones predeterminadas (supongo que la pérdida de los archivos de configuración en las ubicaciones de configuración por defecto no es el comportamiento deseado), es mejor utilizar el nuevo spring.config.additional-locationargumento de que no anula sino que sólo se extienden las ubicaciones predeterminadas:

-Dspring.config.additional-location=file:${user.home}/file/path/

(Como alternativa, puede utilizar la variable de entorno SPRING_CONFIG_ADDITIONAL-ubicación si usted prefiere utilizar las variables de entorno en lugar de argumentos de JVM)

Referencia: https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=226867&siteId=1
Recomendado
Clasificación