Spring Boot yaml 嵌套属性映射到配置类 HashMap

dei*_*jer 5 yaml spring-boot

我有一个名为的配置类CommonConfig,到目前为止一直运行良好\xe2\x80\xa6

\n\n
@Data\n@Component\n@ConfigurationProperties(prefix = \xe2\x80\x9cmy")\npublic class CommonConfig {\n  private String foo;\n  private String bar;\n  private SubA subA;\n\n  @Data \n  public static class SubA {\n    private String baz;\n    private SubB subB;\n\n    @Data \n    public static class SubB {\n      private String qux;\n    }\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

以及Yaml property与之配套的文件:

\n\n
my.foo: a\nmy.bar: b\nmy.sub-a.baz: c\nmy.sub-a.sub-b.qux: d\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我想进入mapSubB 时,我的问题就开始了:

\n\n
my:\n  foo: a\n  bar: b\n  sub-a:\n    baz: c\n    sub-b:\n      qux: d\n      map:\n        number-one: 1\n        number-two: 2\n        number-three: 3\n
Run Code Online (Sandbox Code Playgroud)\n\n

我尝试在 SubB 类中添加一个简单的地图声明:

\n\n
...\n@Data \npublic static class SubB {\n  private String qux;\n  private Map<String, Integer> map = new HashMap<>();\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我运行此命令时,所有其他属性都在配置中,但地图是空的。\n我也尝试不初始化地图,但它保持为空。

\n\n

我的@SpringBootApplication类以前仅使用该注释就可以正常工作。基于其他一些 StackOverflow 问题,我尝试添加@EnableConfigurationProperties,但没有什么区别。

\n

dei*_*jer 2

这个例子确实运行得很好。我的具体问题是配置文件未被读取。