2016-12-15 3 views
3

Можно ли комбинировать списки тех же элементов из нескольких файлов конфигурации Spring-Boot, написанных в YAML?Объединить список из нескольких файлов YAML с загрузочной загрузкой

Пример:

postgres.yml содержит мою Postgres БД информации. Он также содержит расположение Пролетного пути моих сценариев переноса:

--- 
flyway: 
    locations: 
    - flyway/migrations/postgres 

То же самое с моим оракулом миграцией:

--- 
flyway: 
    locations: 
    - flyway/migrations/oracle 

Теперь, если я хочу, чтобы начать мое приложение с тестом-данными, я хочу, чтобы включить мои test_data каталога, а также (эти данные работают как для Postgres и оракула):

--- 
flyway: 
    locations: 
    - flyway/test_data 

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

Для этой настройки я мог бы создать четыре конфигурационных файла для запуска каждого db с тестовыми данными и без них, но что бы я сделал, если бы у меня было четыре разных базы данных и три набора тестовых данных?

ответ

1

К сожалению, как описано в Spring docs, в настоящее время это невозможно. Если вы знаете набор имен профилей раньше времени, вы, вероятно, можете обойти это, создав отдельные списки, префикс с именем профиля, а затем в своем компоненте, имея в нем код, который объединяет их в окончательный список. Этот код будет просто перебирать все известные префиксы имени профиля, а если профиль неактивен, этот список будет пустым.

К сожалению, это кажется сложнее, если вы не являетесь владельцем компонента, например, в вашем случае с проездом. Однако это может быть возможно.