gpt4 book ai didi

java - Spring Boot - 合并 map 属性的 map

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:10:37 36 4
gpt4 key购买 nike

我使用的是 Spring Boot 1.5.6,配置属性如下:

@Component
@Getter
@Setter
@ConfigurationProperties("test")
public class TestProperties {
private Map<Integer, Integer> map;
private Map<String, Map<Integer, Integer>> mapOfMaps;
}

和两个yaml配置文件:

application.yml

test:
map:
1: 10
2: 20
mapOfMaps:
KEY1:
1: 10
2: 20
KEY2:
3: 30
4: 40

application-dev.yml

test:
map:
100: 100
mapOfMaps:
KEY1:
100: 100

当我使用 dev 配置文件运行我的应用程序时,我预计这两个属性将仅包含 dev 配置文件值(因此基本上与 application-dev 完全匹配。 yml).

此处提供示例项目:https://github.com/poznachowski/spring-boot-mapmerge

对于简单的 map 属性,它工作正常,但对于 mapOfMaps 属性,它解析为 {KEY1={100=100}, KEY2={3 =30, 4=40}}.

这是设计使然吗?如果是,有没有办法让它按照我描述的方式工作?

最佳答案

这是按设计工作的。 application.yml 可以看作是为其他配置文件提供默认值以覆盖。

本质上,基本配置将与您启用的配置文件合并,但 Activity 配置文件中的 key 将取代默认配置文件中的 key 。

Spring Boot - Properties & configuration documentation

当我使用 spring boot 1.5.6.RELEASE 运行您的示例时,生成的配置对象如下所示:

test:
map:
1: 10
2: 20
100: 100
mapOfMaps:
KEY1:
1:10
2:20
100:100
KEY2:
3: 30
4: 40

如果您想激活一个或另一个配置,您必须将第一个配置放在另一个应用程序中-{profile}.yml 或确保覆盖默认配置中的每个属性。

关于java - Spring Boot - 合并 map 属性的 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45859131/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com