SpringBootTest javax.validation.ValidationException

SpringBootTest javax.validation.ValidationException

我正在测试带注释的 javax 验证。它们在方法参数上带有 @Valid 注释的应用程序中运行良好。但是当我尝试通过使用

手动构建验证工厂来测试它们时
Validation.buildDefaultValidatorFactory()

我收到以下错误。

javax.validation.ValidationException: HV000183: Unable to initialize 'javax.el.ExpressionFactory'. Check that you have the EL dependencies on the classpath, or use ParameterMessageInterpolator instead

收到此错误后,我在我的 gradle 文件中添加了 compile "org.glassfish:javax.el:3.0.0",它开始工作了。为什么,验证在应用程序中工作而不需要 org.glassfish:javax.el 但在手动构建验证工厂时需要?

Hibernate Validator 需要统一表达式语言的实现来评估约束违规消息中的动态表达式。

当应用程序在 Java EE 容器中运行时,容器已经提供了 EL 实现,因此无需添加额外的依赖项。