我有一个带有相当复杂的配置对象的 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 不允许这样做。您需要完全重复整个数组。
另一种方法(但可能不符合您的愿望):
cfg:
array:
- ref-id: 123
name: special name
some-key:
sub-array:
- ${editableValue}
- value2
- value3
然后在命令行参数中使用 editableValue。