Spring не жалуется, если свойство не установлено при использовании ConfigurationProperties
У меня есть bean-компонент, который настраивается через ConfigurationProperties:
@Component
@ConfigurationProperties(prefix = "mybean")
public class MyBean {
@NotEmpty
private String name;
// Getters, setters, ...
}
Я настраиваю значения полей через application.yml
но в "двух уровнях". В файле application.yml по умолчанию я просто установил значение на значение другого свойства:
myBean.name: ${theValueOf.myBean.name}
В профильном файле YML у меня есть:
theValueOf.myBean.name: 'The desired value'
Я ожидал, что если я забуду указать свойство theValueOf.myBean.name
тогда приложение должно выйти из строя при запуске с сообщением о том, что заполнитель 'theValueOf.myBean.name' не может быть разрешен. Вместо этого полеname
присваивается значение (буквально) ${theValueOf.myBean.name}
.
Если я аннотирую name
поле с @Value("${myBean.name}")
(и не используйте ConfigurationProperties) и забудьте определить свойство theValueOf.myBean.name
, то приложение не запускается - как и ожидалось.
Мой вопрос: как я могу заставить Spring выйти из строя при запуске с сообщением "Не удалось разрешить заполнитель..." при использовании ConfigurationProperties?
1 ответ
Просто отметьте свои свойства аннотациями JSR303 внутри вашего @ConfigurationProperties.
@Component
@ConfigurationProperties(prefix = "mybean")
public class MyBean {
@NotEmpty
private String name;
}