Я пытаюсь программно прочитать файлы свойств в стиле 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 обрабатывать его автоматически, как обычно.