如何附加到覆盖的 YAML 文件(Spring)中的数组?
Posted
技术标签:
【中文标题】如何附加到覆盖的 YAML 文件(Spring)中的数组?【英文标题】:How to append to array in overridden YAML file (Spring)? 【发布时间】:2019-12-18 12:07:07 【问题描述】:我有一个包含application.yml
的 JAR。该 YAM 文件包含一个数组,例如:
things:
- name: one
color: red
我需要在运行时通过在与 JAR 相同的目录中添加一个额外的 application.yml
文件来调整此数组。但是,我不确定如何 追加 到数组,因为以下配置似乎替换了 JAR 中内置 YAML 文件中的配置:
things:
- name: red
color: blue
最后,在运行时,我需要这个:
things:
- name: one
color: red
- name: two
color: blue
【问题讨论】:
你找到解决这个问题的方法了吗? 不,我不认为它受支持。 【参考方案1】:好像有人问过a similar question。听起来好像不支持。查看文档,我发现 some older docs 表明它不受支持。
当在多个配置文件中指定一个集合时,使用具有最高优先级的一个(并且只使用那个):
foo: list: - name: my name description: my description - name: another name description: another description --- spring: profiles: dev foo: list: - name: my another name
在上面的示例中,考虑到开发配置文件处于活动状态,FooProperties.list 将包含一个 MyPojo 条目(名称为“我的另一个名称”且描述为空)。
A newer 2.6.0 snapshot doc 提到了相同的内容,但似乎鼓励您将密钥命名为它们自己的对象。您可能无法访问将它们引入的 bean,但如果可以的话,以这种方式构建其他 bean 可能会很好。
考虑以下配置:
my: map: key1: name: "my name 1" description: "my description 1" --- spring: config: activate: on-profile: "dev" my: map: key1: name: "dev name 1" key2: name: "dev name 2" description: "dev description 2"
如果开发配置文件未激活,MyProperties.map 包含一个带有键 key1 的条目(我的名字为 1,我的描述为 1)。但是,如果启用了开发配置文件,则映射包含两个条目,其键为 key1(名称为 dev 名称 1,描述为我的描述 1)和 key2(名称为 dev 名称 2,描述为 dev 描述 2) .
【讨论】:
以上是关于如何附加到覆盖的 YAML 文件(Spring)中的数组?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 SpringBoot 配置外部文件覆盖到类路径文件?
如何在复制粘贴时覆盖 VS Code 中的文件(而不是将 *.1* 附加到文件名)?