2016-12-15 3 views
3

Ist es möglich, Listen der gleichen Elemente aus mehreren Spring-Boot-Konfigurationsdateien in YAML zu kombinieren?Liste aus mehreren Spring-Boot-YAML-Dateien kombinieren

Beispiel:

postgres.yml enthält mein Postgres db Informationen. Es enthält auch die flyway Position meines Migrationsskripts:

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

Das gleiche mit meinen Oracle-Migrationen:

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

Nun, wenn ich meine Anwendung mit Testdaten beginnen soll, möchte ich mein einschließen test_data Verzeichnis als auch (diese Daten arbeiten für beide postgres und oracle):

--- 
flyway: 
    locations: 
    - flyway/test_data 

Wenn ich ausführen, um die Anwendung mit aktiven Profilen postgres,testdata die Migrationen werden nicht geladen, da der locations-Eintrag von der Testdaten-Datei überschrieben wird.

Für dieses Setup konnte ich vier Konfigurationsdateien erstellen, um jede db mit und ohne Testdaten zu starten, aber was würde ich tun, wenn ich vier verschiedene Datenbanken und drei Sätze Testdaten habe?

Antwort

1

Leider ist dies, wie in der Spring docs beschrieben, derzeit nicht möglich. Wenn Sie die Menge der Profilnamen im Voraus kennen, können Sie das wahrscheinlich umgehen, indem Sie separate Listen mit dem Profilnamen erstellen und dann in Ihrem Bean Code einfügen, der sie in die endgültige Liste einfügt. Dieser Code würde nur über alle bekannten Profilnamen-Präfixe iterieren, und wenn ein Profil nicht aktiv wäre, wäre diese Liste leer.

Leider scheint dies schwieriger, wenn Sie die Bohne nicht besitzen, wie in Ihrem Fall Flyway. Es könnte aber trotzdem möglich sein.

Verwandte Themen