Nov*_*Guy 12 java validation spring hibernate-validator
我现在很困惑.我知道Hibernate Validator 6是Bean Validation 2.0规范的参考实现.它支持分组,错误消息的国际化,自定义方法验证等.问题是Spring 5是否支持这些功能,还是我只剩下Hibernate Validator 6?
为什么我应该使用Hibernate Validator和我的Sprig Boot项目而不是提供的Spring Validation.我的公司需要使用任何第三方库的理由.
所有在线参考示例都建议使用Hibernate Validator,并且在Spring验证中没有发现任何内容,请建议或指向其他链接.
使用Bean验证,单个javax.validation.Validator实例通常会验证所有声明验证约束的模型对象。要使用Spring MVC配置这种JSR-303支持的验证器,只需将Bean验证提供程序(例如Hibernate Validator)添加到类路径中
您可以通过创建具有spring-boot-starter-web依赖性的示例spring-boot项目来验证这一点。它实际上将hibernate-validator依赖项添加到您的类路径中
这是春季教程中指向jsr-303的几个链接:
https://howtodoinjava.com/spring/spring-mvc/spring-bean-validation-example-with-jsr-303-annotations/
https://www.mkyong.com/spring-mvc/spring-3-mvc-and-jsr303-valid-example/
Hibernate Validation 是 JSR 303:Bean Validation API 的实现。Spring 有其 Validation 包(它支持 JSR 303:Bean Validation API,但不支持正确的实现)。
您可能会注意到这org.springframework.validation.Validator与 不同javax.validation.Validator。
您可以通过创建一个像这里org.springframework.validation.Validator一样简单的类来执行 Spring 验证,但如果您需要遵循 JSR 303:Bean Validation API 的规范,您可以通过 Hibernate Validator 来完成。
好的,可以添加更多细节。
1)如果您想执行(某些)验证,可以使用 spring 来完成。(下面是一些片段):
import org.springframework.validation.Validator;
class MyService{
Validator validator = new MyValidator();
//perform validation
}
class MyValidator implements Validator{
// Your own validation logic. You may use ValidationUtils to help.
}
Run Code Online (Sandbox Code Playgroud)
2) 如果你想执行(JSR 303 规范)验证,你需要有像 Hibernate 这样的提供者。
import javax.validation.Validator;
class MyService{
ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); //Bootstraping
Validator validator = factory.getValidator();
//perform validation
}
Run Code Online (Sandbox Code Playgroud)
上面的Bootstraping过程是由Spring框架支持的。你需要做的就是让 spring 创建 beanLocalValidatorFactoryBean
<bean id="validator"
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
Run Code Online (Sandbox Code Playgroud)
并注入这个bean。
import javax.validation.Validator;
@Service
public class MyService {
@Autowired
private Validator validator;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7233 次 |
| 最近记录: |