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?
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 archivomy-app.jar
. Este archivo debe contener las propiedades que deseas anular, de la siguiente manera:Luego, puedes iniciar la aplicación con el siguiente comando:
Este comando le indica a Spring Boot que use los archivos de propiedad
application
yapplication-local
, siendo el archivoapplication-local
el de mayor prioridad sobre el archivoapplication
. Dado que el archivoapplication-local
contiene las propiedades que deseas anular, se utilizarán en lugar de los valores del servidor de configuración remota.