我正在尝试使用 Spring 框架创建一个 Rest API。我正在使用 Hibernate-Validator 使用 @Valid 注释来验证服务器请求值。
为了测试这一点,我使用 MockMvc。但是,当我在 MockMvc 中请求该地址的值时,验证不起作用。
如果我在没有测试的情况下运行本地服务器并检查它,它工作正常。
我尝试过调试,但它没有加载验证器来进行验证,我该如何解决这个问题?
其他帖子都使用boot,但我没有使用spring boot。 spring boot中的框架不是一样的吗,还是有什么不同?
这是我用于测试的注释。
@WebAppConfiguration @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration
解决方案
将任何适用的依赖项版本更改为最新版本。
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
添加依赖项
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.el</artifactId>
<version>3.0.0</version>
</dependency>
MockMvc 默认情况下不启用验证。就我而言,我通过添加 LocalValidatorFactoryBean bean 解决了这个问题:
@Bean
public LocalValidatorFactoryBean localValidatorFactoryBean() {
return new LocalValidatorFactoryBean();
}