2016-12-15 103 views
3

是否可以合并来自在YAML中编写的多个弹簧引导配置文件中相同元素的列表?从多个弹簧引导YAML文件合并列表

例子:

postgres.yml包含我的Postgres数据库信息。它也包含了我的迁移脚本的飞路的位置:

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

同样与我的Oracle迁移:

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

现在,如果我要开始我的测试数据的应用程序,我想包括我test_data目录以及(这些数据两者的Postgres和Oracle工作):

--- 
flyway: 
    locations: 
    - flyway/test_data 

当我运行与有效简postgres,testdata的应用由于位置条目被测试数据文件覆盖,因此不会加载迁移。

对于这个设置,我可以创建四个配置文件来运行每个数据库,不管有没有测试数据,但是如果我有四个不同的数据库和三组测试数据,我该怎么办?

回答

1

不幸的是,如Spring docs所述,目前这是不可能的。如果您事先知道配置文件名称的集合,则可以通过创建单独的列表(以配置文件名称为前缀)来解决此问题,然后在您的Bean中包含将它们合并到最终列表中的代码。该代码将迭代所有已知的配置文件名称前缀,并且如果配置文件未处于活动状态,则该列表将为空。

不幸的是,如果你不拥有这个bean,比如在你的Flyway案例中,这似乎更难。但它仍然有可能。