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;
}
Другие вопросы по тегам