Java 在应用程序启动期间验证@Value注释字段
在应用程序启动期间,如何检查属性文件中的值是否符合我的期望?直接注释字段不起作用。 我使用的是spring boot 1.5.3.RELEASE,spring 4.3.8.RELEASE 服务:Java 在应用程序启动期间验证@Value注释字段,java,spring,validation,hibernate-validator,Java,Spring,Validation,Hibernate Validator,在应用程序启动期间,如何检查属性文件中的值是否符合我的期望?直接注释字段不起作用。 我使用的是spring boot 1.5.3.RELEASE,spring 4.3.8.RELEASE 服务: @Service @Validated public class ConfigService { @URL @Value("${checkout.url}") private String checkoutUrl; @Size(max = 26) @Value("
@Service
@Validated
public class ConfigService {
@URL
@Value("${checkout.url}")
private String checkoutUrl;
@Size(max = 26)
@Value("${checkout.payment-method}")
private String paymentMethod;
}
属性文件(application.properties):
您可以在类中使用此getter方法样式来验证字符串长度:
@Size(min = Number, max = Number)
public String getField() {
return field;
}
对于验证号码:
@Max(Number) or @Min(Number)
当Number等于int值时
如果字段没有此限制,它将抛出java.lang.IllegalStateException
如果您没有以下条件,请不要忘记将此依赖项添加到pom中:
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>el-impl</artifactId>
<version>2.2</version>
</dependency>
org.glassfish.web
厄尔尼普勒
2.2
作为一个选项,您可以对这些字段的setter进行注释(而不是直接对字段进行注释),并在这些setter中进行所有验证。如果验证失败,您可以抛出一个错误。@RomanProshin:在setters上设置验证不起作用,我得到一个异常:交叉参数约束X没有交叉参数验证程序。方法验证是在返回值上执行的,该值对于setttersValidation来说是“void”,它只适用于@ConfigurationProperties
带注释的类,并结合使用@enableCigurationProperties
.Hi,@M.Deinum,这听起来像是正在发生的事情,但是,如果不是太麻烦的话,你能在回答中补充解释一下为什么会这样吗?谢谢。我已经回答过:在Bean构造期间,当Spring上下文初始化时,不会调用getter。
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>el-impl</artifactId>
<version>2.2</version>
</dependency>