es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Anula una propiedad remota de Spring Cloud con una local

Tengo una aplicación Spring Boot que lee propiedades de un servidor de configuración remoto a través de Spring Cloud, y funciona bien con diferentes archivos de configuración definidos en el repositorio remoto, lo estoy ejecutando con el siguiente comando:

java -jar my-app.jar –spring.profiles.active=my-custom-profile

Sin embargo, en algunos casos especiales me gustaría poder ejecutar la aplicación mientras cambio algunas de las propiedades remotas (estos cambios no son fijos, por lo que no puedo crear perfiles personalizados para ellos), así que he intentado sobrescribirlos directamente a través de la línea de comandos de esta manera:

java -jar my-app.jar –spring.profiles.active=my-custom-profile –my.first.property=value1 –my.second.property=value2

Pero parece que no se toma en consideración, porque la aplicación sigue tomando las propiedades remotas al iniciar.

¿Existe alguna forma adecuada de lograr eso?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, puedes anular las propiedades remotas utilizando la función de orden de origen de propiedades de Spring Boot. Esta función te permite especificar el orden en el que se consideran las fuentes de propiedades al resolverlas. Por defecto, el servidor de configuración remota es la fuente de propiedad de mayor orden, lo que significa que siempre tendrá prioridad sobre cualquier otra fuente de propiedad.

    Para anular las propiedades remotas, puedes agregar una nueva fuente de propiedad de menor orden que contenga las propiedades que deseas anular. Una forma de hacer esto es crear un archivo llamado application-local.properties y colocarlo en el mismo directorio que el archivo my-app.jar. Este archivo debe contener las propiedades que deseas anular, de la siguiente manera:

    my.first.property=value1
    my.second.property=value2
    

    Luego, puedes iniciar la aplicación con el siguiente comando:

    java -jar my-app.jar --spring.profiles.active=my-custom-profile --spring.config.name=application,application-local
    

    Este comando le indica a Spring Boot que use los archivos de propiedad application y application-local, siendo el archivo application-local el de mayor prioridad sobre el archivo application. Dado que el archivo application-local contiene las propiedades que deseas anular, se utilizarán en lugar de los valores del servidor de configuración remota.

Comments are closed.