如何在没有框架的情况下通过hibernate验证来使用JavaBeans验证?
我在JavaFX应用程序上通过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
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,因此,这将非常有用: