Spring Boot + Yaml + @PropertySource + @ConfigurationProperties +属性源文件中的列表未注入

时间:2019-08-08 09:49:15

标签: java spring-boot yaml

我正在尝试使用external.yml@ConfigurationProperties属性注入POJO并使用external.yml导入我的@PropertySource文件。所有其他内容都注入了POJO中,但不是复杂的列表。

a。我尝试将@NestedConfigurationProperty用于复杂的列表和地图。 b。我尝试将复杂的POJO用作内部静态和外部类。 C。尝试使用@EnableConfigurationProperties注释。等

ExternalProp.java

   @Component
   @PropertySource(value = "classpath:external.yml", encoding = "UTF-8")
   @ConfigurationProperties

   @Data
   public class ExternalProp {

    private String bla;
    private List<Person> persons;
    private List<String> other;

    @Data
    public static class Person {

        private int age;
        private String name;
        private Map<String, String> args;
    }

}

external.yml

   bla: bkdfjgkdf
   persons:
   -  age: 12
      name: bla1
      args:
        a0: a0dev
        a1: a1dev
        a2: a2dev
   -  age: 12
      name: bla2
      args:
        b0: b0dev
        b1: b1dev
        b2: b2dev
   strings: bla, bla1

bla: bkdfjgkdfstrings: bla, bla1已被正确注入,但没有被正确注入。我在哪里犯错。

然后将同一persons对象复制到application.yml文件,然后BOOM,正确获取值。

我期望有一张地图args的人物列表。

1 个答案:

答案 0 :(得分:-1)

我认为这与您的yml格式有关。 试试这个

external.yml

   bla: bkdfjgkdf
   persons:
      -  age: 12
         name: bla1
         args:
           a0: a0dev
           a1: a1dev
           a2: a2dev
      -  age: 12
         name: bla2
         args:
           b0: b0dev
           b1: b1dev
           b2: b2dev
   strings: bla, bla1