Spring-Boot:深度嵌套配置属性的命令行参数

问题描述 投票:0回答:1

我有一个带有相当复杂的配置对象的 Spring-Boot 3.1.6 应用程序。在

application.yml
中有这样的:

cfg:
  array:
    - ref-id: 123
      name: special name
      some-key:
        sub-array:
          - value1
          - value2
          - value3

现在我想通过命令行覆盖“value1”:

java -jar app.jar --cfg.array[0].some-key.sub-array[0]=valueX

但是,似乎

myCfg.array[0]
变成了一个全新的对象,我在配置文件中配置的所有内容都被忽略或删除。因此,
refId
为 0,
name
为空。

我在这里做错了什么?如何正确设置该嵌套值,而其他所有内容都保持配置文件中的配置?

spring-boot configuration command-line-arguments
1个回答
0
投票

Spring Boot 不允许这样做。您需要完全重复整个数组。

另一种方法(但可能不符合您的愿望):

cfg:
  array:
    - ref-id: 123
      name: special name
      some-key:
        sub-array:
          - ${editableValue}
          - value2
          - value3

然后在命令行参数中使用 editableValue

© www.soinside.com 2019 - 2024. All rights reserved.