有没有办法在 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
}