Загрузить свойство типа List из приложения yml в Java POJO - PullRequest
0 голосов
/ 22 февраля 2019

Я хочу загрузить вложенное свойство List в JAVA POJO

Я загружаю свойства из yml, используя аннотацию ConfigurationProperties над классом A. Мой список имеет тип B. Этот объект B имеетСвой собственный атрибут LISTОднако свойства yml загружаются не так, как ожидалось.

@ConfigurationProperties(prefix="prop")
public class A{
List<B> b = new ArrayList<>(); 

//getters and setters ......
}

public class B{
String user; //This property gets loaded.
List<String> list = new ArrayList<>(); //However this list is still empty

//getters and setters ......
}

Мои свойства в application.yml выглядят как показано ниже.

prop:
  -
  user: alpha
  list: a,b,c
  -
  user: beta
  list: x,y,z

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Ну, это не синтаксис YAML для List:

list: a,b,c

Это всего лишь одна строка a,b,c.

Если вы хотите использоватьсписок с разделителями, вы можете разобрать его после загрузки.Spring делает нечто подобное со своими собственными свойствами, как в этом примере со свойствами RabbitMQ.addresses разделены запятой, а функция parseAddresses() разделяет строку после загрузки как часть метода установки этого члена.

https://github.com/spring-projects/spring-boot/blob/v2.1.3.RELEASE/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/amqp/RabbitProperties.java

В противном случае используйте список YAMLсинтаксис.

prop:
  - user: alpha
    list: 
      - a
      - b
      - c
  - user: beta
    list:
      - x
      - y
      - z
0 голосов
/ 22 февраля 2019

Согласно руководству вы определяете элементы списка следующим образом:

list: 
      - a
      - b
      - c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...