Spring Boot вводит список карт из application.yml

#spring-boot

#spring-boot

Вопрос:

Я пытаюсь ввести список карт из конфигурации Spring Boot, но получаю пустой список. Как правильно ввести это?

 cacheConfigs:
  - cacheOne:
       test: test1
  - cacheTwo:
       test: test2
  - cacheThree:
       test: test3
  - cacheFor:
       test: test4
 
 @ConfigurationProperties(prefix = "cacheConfigs")
public List<Map<String, String>> getCacheConfigs() {
    return new ArrayList<>();
}
 

Комментарии:

1. Может быть, этот пример может быть полезен? Он также сопоставляет свойства со списком объектов карты.

Ответ №1:

Это было «новым» для меня. Я получил эту работу, сделав cacheConfigs один уровень глубже и используя новое имя верхнего уровня в качестве @ConfigurationProperties параметра. Вот так:

 cache-configs-map:
  cacheConfigs: 
    - cacheOne:
        test: test1
    - cacheTwo:
        test: test2
    - cacheThree:
        test: test3
    - cacheFor:
        test: test4
 

Теперь ваш класс конфигурации выглядит следующим образом:

 @Configuration
public class Config{
    @NoArgsConstructor @AllArgsConstructor( staticName = "of" )
    @Getter @Setter
    public static class C{
        private List<Map<String, String>> cacheConfigs;
    }
    
    @Bean
    @ConfigurationProperties(prefix = "cache-configs-map")
    public C getC() {
        return new C();
    }
}