java—有没有办法在SpringBoot中验证@value?

7ajki6be  于 2021-06-29  发布在  Java
关注(0)|答案(2)|浏览(360)

我在用 @Value 将属性文件中的参数注入到应用程序中的变量。
因为我不是应用程序中唯一的用户,我想确保注入安全,所以我需要在注入之前验证参数。
例子:
属性文件:

example.string=str1,str2

应用程序.java

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

例如,本例中的预期行为是抛出异常,因为我假设数组case中有“,”id分隔符

kxkpmulp

kxkpmulp1#

我不认为你能在注入之前做到这一点,尝试使用后构造方法
你可以这样做:

@PostConstruct
public void validateValue() {
    if (someProperty.contains(",")) {
        throw new MyException("error");
    }
}
blpfk2vs

blpfk2vs2#

我不认为你可以直接 @Value . 但您可以这样做,如果验证失败,启动时将失败:

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

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

  // getters / setters
}

相关问题