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