是否可以组合使用 YAML 编写的多个 spring-boot 配置文件中相同元素的列表?
Example:
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
由于位置条目被测试数据文件覆盖,因此未加载迁移。
对于此设置,我可以创建四个配置文件来运行每个数据库(带或不带测试数据),但是如果我有四个不同的数据库和三组测试数据,我该怎么办?
不幸的是,正如在春季文档 https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-complex-type-merge,目前这是不可能的。如果您提前知道配置文件名称集,则可以通过创建单独的列表(以配置文件名称为前缀)来解决此问题,然后在您的 bean 中添加将它们合并到最终列表中的代码。该代码只会迭代所有已知的配置文件名称前缀,如果配置文件未激活,则该列表将为空。
不幸的是,如果您不拥有该豆(例如您的 Flyway 案例),这似乎会更困难。不过,这可能仍然是可能的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)