Как конфигурация облака Spring использует локальное свойство, переопределяющее удаленное свойство

Я знаю, что нужно установить следующие свойства, но все еще не понимаю, где они должны быть установлены.

spring:
    cloud:
        config:
            allowOverride: true
            failFast: true
            overrideNone: false

файл application.properties на стороне облачного сервера Spring, на стороне клиента или в удаленном репозитории Git?

Я установил их в application.yml на стороне сервера, но не работает.

Я пытаюсь установить application.yml на удаленном git, и снова не работаю, надеюсь, вы могли бы мне помочь, спасибо.


person allenyu5    schedule 05.05.2017    source источник
comment
Установите его в bootstrap.yml в приложении с весенней загрузкой.   -  person VelNaga    schedule 05.05.2017
comment
@VelNaga Спасибо за ответ, но у вас все еще есть вопрос. В каком приложении с весенней загрузкой должен быть bootstrap.yml, облачном клиенте Spring или облачном сервере Spring?   -  person allenyu5    schedule 08.05.2017


Ответы (2)


Я установил следующие конфигурации в удаленном репозитории git. На этот раз это сработало.

spring:
  cloud:
    config:
      allowOverride: true
      overrideNone: true
      overrideSystemProperties: false
person allenyu5    schedule 09.05.2017
comment
Что делать, если свойства загружаются с сервера конфигурации? Где вы устанавливаете репозиторий git для получения значений? - person Philip Rego; 13.11.2020

Из переопределения значений удаленных свойств раздел в документации Spring Cloud:

Источники свойств, которые добавляются к вашему приложению контекстом начальной загрузки, часто являются удаленными (например, с сервера конфигурации), и по умолчанию они не могут быть переопределены локально, кроме как в командной строке. Если вы хотите разрешить своим приложениям переопределять удаленные свойства своими собственными Системными свойствами или файлами конфигурации, удаленный источник свойств должен предоставить ему разрешение, установив spring.cloud.config.allowOverride=true (это не работает, чтобы установить это локально).

После того, как этот флаг установлен, есть некоторые более тонкие настройки для управления расположением удаленных свойств по отношению к свойствам системы и локальной конфигурации приложения: spring.cloud.config.overrideNone=true для переопределения любым локальным источником свойств и spring.cloud.config.overrideSystemProperties=false, если только системные свойства и переменные env должны переопределять удаленные настройки, но не локальные файлы конфигурации.

Таким образом, он должен быть установлен в удаленном application.yml (например, в удаленном репозитории git). Как отмечено здесь: приложение не может самостоятельно решить, что он может переопределить конфигурацию из удаленного источника.

person lcnicolau    schedule 18.03.2019
comment
Отличный ответ. Но один маленький вопрос. как насчет bootstrap.yml? Если у меня есть пара ключ: значение на сервере облачной конфигурации и такая же пара ключ: значение в моем bootstrap.yml, что будет иметь приоритет при запуске приложения? Спасибо - person theprogrammer; 07.12.2019
comment
@theprogrammer, как указано здесь: cloud.spring.io/spring-cloud-static/spring-cloud-commons/ Любые свойства, объявленные в самом bootstrap.yml, имеют очень низкий приоритет (ниже, чем application.yml). - person Grzegorz Poznachowski; 21.04.2020
comment
хорошо, значит app.yml имеет приоритет над bootstrap.yml. как насчет bootstrap.yml через сервер облачной конфигурации? - person theprogrammer; 21.04.2020
comment
Можете ли вы показать, как переопределить локально в командной строке. Что, если я хочу установить свойства локально и быстро при разработке, не затрагивая других разработчиков. - person Philip Rego; 13.11.2020