【发布时间】:2021-12-01 23:06:10
【问题描述】:
Spring 使用的是休眠工厂提供的默认验证器工厂。但是,我不想包含表达式语言依赖项。
answer 建议通过使用此代码避免使用默认工厂:
import javax.validation.Validation;
import javax.validation.Validator;
import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator;
private static final Validator VALIDATOR =
Validation.byDefaultProvider()
.configure()
.messageInterpolator(new ParameterMessageInterpolator())
.buildValidatorFactory()
.getValidator();
当我引用 VALIDATOR 时效果很好,但我不确定如何告诉 spring 使用上面的而不是 OptionalValidatorFactoryBean,它扩展了 LocalValidatorFactoryBean,我认为它填充了来自 @ 的验证器987654326@ 基于来自LocalValidatorFactoryBean 的javadoc
综上所述,如何将spring的默认Validation.buildDefaultValidatorFactory()替换为Validation.byDefaultProvider().configure().messageInterpolator(new ParameterMessageInterpolator()).buildValidatorFactory().getValidator()
这样我就可以避免对表达式语言的依赖。
【问题讨论】:
-
你想像控制器方法和/或命令 bean 一样进行验证吗?
-
我正在验证由 spring 转换为 bean 的 http 请求。 bean 具有 Bean Validation。
标签: java spring-mvc hibernate-validator