Mapping list in Yaml to list of objects in Spring Boot

后端 未结 6 824
暖寄归人
暖寄归人 2020-11-29 03:52

In my Spring Boot app I have application.yaml configuration file with following content. I want to have it injected as a Configuration object with list of channel configurat

6条回答
  •  醉话见心
    2020-11-29 04:20

    I tried 2 solutions, both work.

    Solution_1

    .yml

    available-users-list:
      configurations:
        -
          username: eXvn817zDinHun2QLQ==
          password: IP2qP+BQfWKJMVeY7Q==
        -
          username: uwJlOl/jP6/fZLMm0w==
          password: IP2qP+BQKJLIMVeY7Q==
    
    

    LoginInfos.java

    @ConfigurationProperties(prefix = "available-users-list")
    @Configuration
    @Component
    @Data
    public class LoginInfos {
        private List configurations;
    
        @Data
        public static class LoginInfo {
            private String username;
            private String password;
        }
    
    }
    
    List list = loginInfos.getConfigurations();
    

    Solution_2

    .yml

    available-users-list: '[{"username":"eXvn817zHBVn2QLQ==","password":"IfWKJLIMVeY7Q=="}, {"username":"uwJlOl/g9jP6/0w==","password":"IP2qWKJLIMVeY7Q=="}]'
    

    Java

    @Value("${available-users-listt}")
    String testList;
    
    ObjectMapper mapper = new ObjectMapper();
    LoginInfos.LoginInfo[] array = mapper.readValue(testList, LoginInfos.LoginInfo[].class);
    
    

提交回复
热议问题