2016-12-15 4 views
3

Est-il possible de combiner des listes des mêmes éléments à partir de plusieurs fichiers de configuration spring-boot écrits en YAML?Combiner la liste à partir de plusieurs fichiers YAML à amorçage par ressort

Exemple:

postgres.yml contient les informations de mes Postgres. Il contient également l'emplacement des voies de migration de mes scripts de migration:

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

La même chose avec mes migrations oracle:

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

Maintenant, si je veux commencer ma demande avec données de test, je veux inclure mon répertoire test_data ainsi (les données de travail pour les deux postgres et oracle):

--- 
flyway: 
    locations: 
    - flyway/test_data 

Quand je lance l'application avec des profils actifs postgres,testdata la les migrations ne sont pas chargées, car l'entrée des emplacements est remplacée par le fichier de données de test.

Pour cette configuration, je pouvais créer quatre fichiers de configuration pour exécuter chaque DB avec et sans les données de test, mais que ferais-je si j'avais quatre bases de données différentes et trois ensembles de données de test?

Répondre

1

Malheureusement, comme décrit dans le Spring docs, ce n'est actuellement pas possible. Si vous connaissez l'ensemble des noms de profils à l'avance, vous pouvez probablement contourner ce problème en créant des listes séparées, préfixées par le nom du profil, puis, dans votre bean, disposer du code qui les fusionne dans la liste finale. Ce code ne ferait qu'opérer sur tous les préfixes de nom de profil connus, et si un profil n'était pas actif, cette liste serait vide. Malheureusement, cela semble plus difficile si vous ne possédez pas le haricot, comme dans votre boîtier Flyway. Il pourrait encore être possible cependant.