Объявите список объектов в файле Spring application.properties - PullRequest
0 голосов
/ 08 января 2020

В приложении Spring Boot я хотел бы иметь возможность объявить список моих доменных объектов в моем файле application.properties и прочитать их как List<TheDomainObject> как Bean.

Например, допустим, у меня в application.properties есть следующее:

com.application.person.john.name=John Smith
com.application.person.john.home-directory=/Users/john.smith
com.application.person.john.private-key-file=/Users/john.smith/.ssh/id_rsa

com.application.person.adam.name=Adam Bell
com.application.person.adam.home-directory=/Users/adam.bell
com.application.person.adam.private-key-file=/Users/adam.bell/.ssh/id_rsa

etc

Т.е. я хотел бы иметь свойства для каждого человека, сгруппированного по ключу. Я мог бы добавить столько ключей (людей), сколько захочу.

Мне не нужно было бы ссылаться на эти свойства напрямую, но я бы хотел объявить объект Domain следующим образом (сокращенно):

class Person {
  String id;   (this would be the 'key', i.e. 'john', 'adam')
  String name;
  Path homeDirectory;
  Path privateKeyFile;

  // boilerplate
}

, а затем получите от List<Person> до Configuration. Чем больше автоматов c, тем лучше, но я был бы более чем рад внедрить компоновщики или какой-либо дополнительный лог преобразователя c, если это необходимо.

Я не могу найти никакой документации для такого рода вещей, но Я видел это, например, в log4j , где вы можете динамически добавлять свойства ведения журнала для любого имени пакета, поэтому должна быть возможность, по крайней мере, получить эти ключи.

Я знаю, что могу сделать это иначе, например, с помощью сценария импорта data.sql, однако в моем случае было бы очень идеально иметь это в формате одного файла свойств (или yaml).

Ответы [ 2 ]

1 голос
/ 08 января 2020

Почему бы вам не использовать id в качестве явного свойства?

, например (yaml):

com:
  application:
    persons:
      - 
        id: john
        name: John Smith
        home-directory: /Users/john.smith
      - 
        id: adam 
        name: Adam Bell
        home-directory: /Users/adam.bell

Это разрешится в List<Person> persons;

0 голосов
/ 08 января 2020

Почему бы вам не использовать @ConfigurationProperties Это поможет вам в этом сценарии, верно?

Пожалуйста, обратитесь за более подробной информацией

https://www.techiedelight.com/map-spring-boot-properties-to-pojo

https://www.baeldung.com/configuration-properties-in-spring-boot

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