有没有办法在 spring 启动时验证@Value?
Is there a way to validate @Value in spring boot?
我正在使用 @Value
将属性文件中的参数注入应用程序中的变量。
因为我不是应用程序中的唯一用户,而且我想确保注入安全,所以我需要在注入前验证参数。
示例:
属性文件:
example.string=str1,str2
app.java
@Value(${example.string})
public String example;
例如,在这种情况下的预期行为是抛出异常,因为我假设数组中的 "," id 定界符
我认为你不能在注入前这样做,尝试使用post构造方法
你可以这样做:
@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
}
我正在使用 @Value
将属性文件中的参数注入应用程序中的变量。
因为我不是应用程序中的唯一用户,而且我想确保注入安全,所以我需要在注入前验证参数。
示例:
属性文件:
example.string=str1,str2
app.java
@Value(${example.string})
public String example;
例如,在这种情况下的预期行为是抛出异常,因为我假设数组中的 "," id 定界符
我认为你不能在注入前这样做,尝试使用post构造方法
你可以这样做:
@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
}