Spring Boot - программная загрузка файлов свойств, включая YAML - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь программно прочитать файлы свойств в стиле Spring, в том числе файлы в формате YAML.

То, что у меня есть, работает, но в итоге это выравнивает YAML, и в результате я получаю ключи, которыевсе перепутано, и когда я пытаюсь сопоставить его с конкретным объектом, он запутывается.

Вот что у меня есть (в Kotlin):

import my.project.Properties
import java.util.Properties as JavaProperties

fun loadConfig(configFiles: List<String>): Properties =
  JavaProperties().apply {
    putAll(appProperties.defaultConfig)
    (if (configFiles.isEmpty()) appProperties.defaultConfigFiles else configFiles)
      .forEach { PropertiesLoaderUtils.fillProperties(this, FileSystemResource(it)) }
  }.let {
    // throws exception because it was flattened
    objectMapper.convertValue(it, Properties::class.java)
  }

Если у меня есть файл конфигурациинапример:

a:
  b:
    c: 1

Я бы хотел, чтобы в свойствах Java получилось что-то эквивалентное этому:

mapOf("a" to mapOf("b" to mapOf("c" to 1)))

Вместо этого я просто получил что-то вроде этого:

mapOf("c" to 1)

Это полностью сглаживает и полностью отбрасывает иерархию.

Я бы предпочел не использовать парсер YAML и делать это сам, потому что я хотел бы разрешить "нормальную" Springтакже и файлы свойств стиля.

Примечание: они должны быть загружены во время выполнения, потому что приложение на самом деле предназначено для работы с чем-то другим, поэтому я не могу просто позволить Spring обрабатывать его автоматически, как обычно.

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