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
如何在没有框架的情况下通过hibernate验证来使用JavaBeans验证?_Java_Hibernate Validator - Fatal编程技术网

如何在没有框架的情况下通过hibernate验证来使用JavaBeans验证?

如何在没有框架的情况下通过hibernate验证来使用JavaBeans验证?,java,hibernate-validator,Java,Hibernate Validator,我在JavaFX应用程序上通过hibernate验证使用JavaBeans验证,因此,没有框架来帮助连接。我将这些依赖项添加到我的项目中: compile group: "org.hibernate", name: "hibernate-validator", version: "6.0.2.Final" compile group: "org.glassfish", name: "javax.el", version: "3.0.1-b08" compile group: "javax.val

我在JavaFX应用程序上通过hibernate验证使用JavaBeans验证,因此,没有框架来帮助连接。我将这些依赖项添加到我的项目中:

compile group: "org.hibernate", name: "hibernate-validator", version: "6.0.2.Final"
compile group: "org.glassfish", name: "javax.el", version: "3.0.1-b08"
compile group: "javax.validation", name: "validation-api", version: "2.0.0.Final"
我发现这可以让modelObject得到验证:

ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
validator.validate(modelObject);
我的问题是,每次我验证时创建一个新的工厂和验证器是否不好?我是否应该将它们缓存在某个地方并重新使用它们?验证器有多昂贵,多线程?

每次创建新的验证器工厂是否都不好? 根据该说明,说明如下:

引导过程生成的ValidatorFactory对象应该被缓存,并在验证器使用者之间共享。 这个类是线程安全的。 对于Validator,它的实现也应该是线程安全的

在Spring中使用javax.Validation 您已经用“Spring”标记了您的问题,因此有一个关于正确使用javax.validation+Spring的简短通知

首先,使用Spring LocalValidatoryFactoryBean作为示例,它将处理您正在寻找的必要缓存:

@Bean
public javax.validation.Validator localValidatorFactoryBean() {
   return new LocalValidatorFactoryBean();
}
其次,也使用Spring注入验证器实例:

@Autowired
private Validator validator;
你可以让Spring做所有的工作。例如,要使与验证相关的注释适用于方法,请定义

@Bean
public MethodValidationPostProcessor methodValidationPostProcessor() {
    return new MethodValidationPostProcessor();
}
在Spring应用程序配置中,然后可以调用

public void myMethod(@Valid MyValidationAnnotatedType parameter){
    ...
}

public void anotherMethod(@Pattern(regex = "^[A-Za-z]+$") stringParameter) {
    ...
} 

有关更多详细信息,请参阅

感谢您提供指向JavaDoc的指针。。。我不该错过的。关于Spring,这是一个错误,因此我删除了标记,但服务器端正在运行Spring,因此,这将非常有用: