如何在覆盖的YAML文件中附加到数组(春季)?

Jos*_* M. 5 java spring yaml spring-boot

我有一个JAR,其中包含一个application.yml。该YAM文件包含一个数组,例如:

things:
  - name: one
    color: red
Run Code Online (Sandbox Code Playgroud)

我需要在运行时通过application.yml在JAR所在的目录中添加其他文件来调整此数组。但是,我不确定如何追加到数组,因为follow config似乎替换了JAR内置YAML文件中的配置:

things:
  - name: red
    color: blue
Run Code Online (Sandbox Code Playgroud)

最后,在运行时,我需要这样做:

things:
  - name: one
    color: red
  - name: two
    color: blue
Run Code Online (Sandbox Code Playgroud)

小智 1

似乎有人问过类似的问题。听起来不支持。查看文档,我发现一些较旧的文档显示它不受支持。

\n
\n

当在多个配置文件中指定一个集合时,将使用优先级最高的一个(并且仅使用该一个):

\n
foo:\n  list:\n    - name: my name\n      description: my description\n    - name: another name\n      description: another description\n---\nspring:\n  profiles: dev\nfoo:\n  list:\n     - name: my another name\n
Run Code Online (Sandbox Code Playgroud)\n

在上面的示例中,考虑到 dev 配置文件处于活动状态,FooProperties.list 将包含一个 MyPojo 条目(名称为 \xe2\x80\x9cmy,另一个名称为 \xe2\x80\x9d,描述为 null)。

\n
\n

较新的 2.6.0 快照文档提到了相同的内容,但似乎鼓励您将密钥命名为它们自己的对象。您可能无法访问引入它们的 bean,但如果可以的话,以这种方式构建其他 bean 可能会更好。

\n
\n

考虑以下配置:

\n
my:\n  map:\n    key1:\n      name: "my name 1"\n      description: "my description 1"\n---\nspring:\n  config:\n    activate:\n      on-profile: "dev"\nmy:\n  map:\n    key1:\n      name: "dev name 1"\n    key2:\n      name: "dev name 2"\n      description: "dev description 2"\n
Run Code Online (Sandbox Code Playgroud)\n

如果开发配置文件未激活,MyProperties.map 将包含一个带有键 key1 的条目(名称为我的姓名 1,描述为我的描述 1)。但是,如果启用了 dev 配置文件,则映射包含两个条目,其中键为 key1(名称为 dev name 1,描述为我的描述 1)和 key2(名称为 dev name 2,描述为 dev description 2) 。

\n
\n