Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在应用程序启动期间验证@Value注释字段_Java_Spring_Validation_Hibernate Validator - Fatal编程技术网

Java 在应用程序启动期间验证@Value注释字段

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("

在应用程序启动期间,如何检查属性文件中的值是否符合我的期望?直接注释字段不起作用。 我使用的是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("${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>