如何替换Spring Web MVC默认Hibernate Validator 避免Expression Language依赖
替换Spring默认校验器规避EL依赖方案
核心思路是自定义LocalValidatorFactoryBean实例覆盖Spring默认实现,指定使用不需要EL支持的ParameterMessageInterpolator即可,无需手动调用底层Validation API构建Validator。
方式1:Java配置类(适配所有Spring项目)
在你的配置类中声明如下Bean:
import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; @Configuration public class ValidationConfig { @Bean public LocalValidatorFactoryBean validator() { LocalValidatorFactoryBean factoryBean = new LocalValidatorFactoryBean(); factoryBean.setMessageInterpolator(new ParameterMessageInterpolator()); return factoryBean; } }
自定义该Bean后,Spring会自动替换默认的OptionalValidatorFactoryBean,构建校验器时优先使用你指定的插值器,完全规避Expression Language依赖。后续可以直接通过@Autowired注入Validator实例使用,无需自行维护静态常量。
方式2:Spring Boot 2.3+版本快捷配置
无需编写配置类,直接在application.properties配置文件中添加如下配置即可:
spring.validation.message-interpolator=org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator
内容的提问来源于stack exchange,提问作者joseph
相关产品推荐
相关产品推荐

