2017-01-04 4 views
3

У меня есть класс конфигурации с именем CommonConfig, который работал отлично до сих пор ...Spring загрузки YAML вложенными свойство карты для класса HashMap Конфигурация

@Data 
@Component 
@ConfigurationProperties(prefix = “my") 
public class CommonConfig { 
    private String foo; 
    private String bar; 
    private SubA subA; 

    @Data 
    public static class SubA { 
    private String baz; 
    private SubB subB; 

    @Data 
    public static class SubB { 
     private String qux; 
    } 
    } 
} 

И Yaml property файл пойти с этим:

my.foo: a 
my.bar: b 
my.sub-a.baz: c 
my.sub-a.sub-b.qux: d 

Моя проблема началась, когда я хотел получить map в SubB:

my: 
    foo: a 
    bar: b 
    sub-a: 
    baz: c 
    sub-b: 
     qux: d 
     map: 
     number-one: 1 
     number-two: 2 
     number-three: 3 

Я попытался добавить простую декларацию карты внутри моего класса SUBB:

... 
@Data 
public static class SubB { 
    private String qux; 
    private Map<String, Integer> map = new HashMap<>(); 
} 

Когда я запускаю это, хотя, и все остальные свойства находятся в конфигурации, но карта пуста. Я также не пытался инициализировать карту, но она остается пустой.

Класс моего @SpringBootApplication ранее работал нормально, используя только одну аннотацию на нем. На основании некоторых других вопросов StackOverflow я попытался добавить @EnableConfigurationProperties, но это не имело значения.

+1

Работы для меня. Если вы разместите ссылку на полный проект, мы сможем увидеть, что вы сделали, что вы нам не сообщаете. –

+0

Большое спасибо за проверку! Я сделал образец, как описано, и это сработало для меня, поэтому я начал портировать свое приложение, чтобы посмотреть, что изменилось. Все это сводилось к тому, что я не читал файл свойств, потому что имя приложения не совпало. Мел еще один до ошибки PEBKAC или ID-10-T. : / – deinspanjer

ответ

2

Этот пример действительно работает нормально. Моя особая проблема - файл конфигурации, который не читался.

Смежные вопросы