Есть ли способ проверить @Value при весенней загрузке?

Я использую @Value для ввода параметров из моего файла свойств в переменную в моем приложении.
Поскольку я не единственный пользователь в приложении, и я хочу сделать инъекцию безопасной, мне нужно проверить параметр перед инъекцией.

Пример:

файл свойств:

example.string=str1,str2

приложение.java

@Value(${example.string})
public String example;

ожидаемое поведение в этом случае, например, состоит в том, чтобы выдать исключение, потому что я предполагаю, что разделитель идентификатора "," в случае массива

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
0
818
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я не думаю, что вы можете сделать это до инъекции, попробуйте использовать метод пост-конструкции

вы можете сделать что-то вроде этого:

@PostConstruct
public void validateValue() {
    if (someProperty.contains(",")) {
        throw new MyException("error");
    }
}
Ответ принят как подходящий

Я не думаю, что вы можете напрямую с @Value. Но вы можете сделать что-то вроде этого, что приведет к сбою при запуске, если проверка не пройдена:

@Validated
@ConfigurationProperties(prefix = "my.prefix")
public class AppProperties {

  //Validation annotations here
  //@NotEmpty
  //@MyCustomValidation
  private String exampleString;


  // getters / setters
}

Другие вопросы по теме