是否有可能以列表合并从用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
的迁移不加载,因为位置项由测试数据文件覆盖主动配置文件的应用程序。
对于此设置,我可以创建四个配置相关的文件来运行使用和不使用测试数据中的每个分贝,但我会怎么做,如果我有四个不同的数据库和三组测试数据?
不幸的是,在Spring docs描述,这是目前不可能。如果你知道这组简档名的时间提前,你也许可以解决此通过创建单独的列表,用配置文件名前缀,然后在你的bean,必须在将它们合并到最终名单它的代码。该代码将只遍历所有已知的配置文件名称的前缀,而如果配置文件是不活跃,该列表将是空的。
不幸的是,这似乎很难,如果你没有自己的豆腐,如您迁飞情况。它可能仍然是可能的,但。
可怕的黑客:如果通过调用创建的内容几个春天启动应用程序上下文
SpringApplication.run(MyClass.class)
多次用不同的配置文件每个。获得不同的名单,并将它们合并成一个。