Spring не может найти свойства конфигурации в файле yaml без каких-либо исключений. Рассмотрим пример:
Дано
application.yml
service:
my:
gifts:
- name: 'candles'
id: '13'
Подарок
@Data @AllArgsConstructor @NoArgsConstructor
public static class Gift {
String name;
String id;
}
Пример 1
Подарки в виде бобов со свойствами конфигурации
Конфигурация
@Configuration
public class MyContext {
@Bean
@ConfigurationProperties("service.my.gifts")
public List<Gift> gifts() {
return new ArrayList<>();
}
}
Если я автоматически подключу бин gifts
, то он появится со значением по умолчанию (пустой список массивов).
Пример 2
Подарки как поле внутри свойств конфигурации bean
@Data
@Configuration
@ConfigurationProperties("service.my")
public class MyServiceProperties {
private List<Gift> gifts = new ArrayList<>();
}
Все работает нормально. Поле gifts
содержит подарок с id
13.
Может кто-нибудь объяснить, пожалуйста, разницу между этими двумя примерами. Почему Пример 1 не сработал?
Spring boot version 1.5.8. ВЫПУСК. Более того, Пример 1 работает отлично (так же, как пример 2) в другом проекте с весенней загрузкой версии 2.1.8.RELEASE.