Я использую @Value
для ввода параметров из моего файла свойств в переменную в моем приложении.
Поскольку я не единственный пользователь в приложении, и я хочу сделать инъекцию безопасной, мне нужно проверить параметр перед инъекцией.
Пример:
файл свойств:
example.string=str1,str2
приложение.java
@Value(${example.string})
public String example;
ожидаемое поведение в этом случае, например, состоит в том, чтобы выдать исключение, потому что я предполагаю, что разделитель идентификатора "," в случае массива
Я не думаю, что вы можете сделать это до инъекции, попробуйте использовать метод пост-конструкции
вы можете сделать что-то вроде этого:
@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
}