Внедрение значения spring карты списка карт

Это может показаться безумным, но я пытаюсь получить файл свойств для моей следующей структуры данных

@Value("#{${myBigMap}}")
Map<String, List<Map<String, String>>> myBigMap;

И файл свойств должен выглядеть так:

myBigMap = { \
      "key1": [{subkey1:'subval1'}], \
      "key2": [{subkey3:'subval3'},{subkey4:'subval4'}] \
}

Я могу заставить карту работать, но эта кажется слишком растянутой. У меня есть некоторые системные свойства для введения другого значения. Не уверен, что могу вручную объединить свойства yaml в источники свойств.

Это не приложение для загрузки Spring. Мы просто используем Spring для внедрения зависимостей.

Был бы очень признателен за любую помощь / подсказку

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

Kartik 26.10.2018 04:17

Это идеальный кандидат для @ConfigurationProperties, который является Spring Boot, которого у вас нет. Вы можете вставить свое свойство в виде строки json в параметр String конструктора bean, а затем использовать Jackson ObjectMapper, чтобы превратить его в карту.

Andy Brown 26.10.2018 10:04
1
2
325
1

Ответы 1

спасибо за подсказки. Я действительно заставил его работать, используя yaml help Джексона

ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
    try {
        Resource myResource = new ClassPathResource("my.yaml");
        Map<String, List<Map<String, String>>> myMap = mapper.readValue( myResource.getInputStream() , Map.class);
        }

и мой ямл выглядит как

k1:
  - sk1: val1
  - sk2: val2

k2:
  - sk3: val3
  - sk4: val4

Другие вопросы по теме