Spring не жалуется, если свойство не установлено при использовании ConfigurationProperties - PullRequest
0 голосов
/ 25 марта 2020

У меня есть компонент, настроенный через ConfigurationProperties:

@Component
@ConfigurationProperties(prefix = "mybean")
public class MyBean {

    @NotEmpty
    private String name;

    // Getters, setters, ...
}

Я настраиваю значения полей с помощью application.yml, но в «двух уровнях». В файле application.yml по умолчанию я просто устанавливаю значение на значение другого свойства :

myBean.name: ${theValueOf.myBean.name}

В профиле, указанном c 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 Ответ

0 голосов
/ 26 марта 2020

Просто пометьте свои свойства аннотациями JSR303 внутри ваших @ ConfigurationProperties.

@Component
@ConfigurationProperties(prefix = "mybean")
public class MyBean {

   @NotEmpty
   private String name;
}
...