Удалить ключ из профиля по умолчанию yml в Spring Boot

У меня есть файл Spring Boot application.yml, структурированный как:

mapValues:
    key1: value1
    key2: value2

Теперь я хочу запустить приложение в другом профиле, где эти ключи / значения должны быть заменены другими ключами в application-profile.yml как:

mapValues:
    key3: value3
    key4: value4

Кажется, что Spring автоматически объединяет эти два профиля yml, и приложение видит:

mapValues:
    key1: value1
    key2: value2
    key3: value3
    key4: value4

Я не хочу оставлять key1 и key, вместо этого просто сохраняю key3 и key4. Как этого добиться?

Должно сработать, если оба они находятся в разных профилях и одновременно вы активируете только один.

SSC 28.03.2018 20:40

Первый находится в профиле по умолчанию с application.yml. Кажется, не существует способа полностью заменить значение карты, предоставленное из профиля по умолчанию.

samyem 28.03.2018 20:41

Итак, если по умолчанию используется первый, key1 и key2 должны быть null при активации профиля. Эти два ключа не должны иметь значений

SSC 28.03.2018 20:42

Я не это вижу. Эти ключи с их значениями остаются. Я потенциально могу изменить значение этих ключей в профиле по умолчанию с новым профилем, но не могу удалить эти ключи.

samyem 28.03.2018 20:47
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
4
2 154
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

То, что вы указываете в файле application.yml, по умолчанию относится ко всем профилям. Если вы хотите разделить свойства, создайте несколько файлов yml, например application-dev.yml и application-test.yml, и укажите профиль явно, как показано ниже (обычно в bootstrap.yml)

spring:
  profiles:
    active: test

С указанным выше профилем ваше приложение будет видеть свойства только в файлах application.yml и application-test.yml. Свойства в application-dev.yml будут недоступны.

Другие вопросы по теме