SpringMVC 可以通过使用注解的方式对参数进行校验,省去参数校验的代码
引入依赖
Spring项目需引入
<dependency><groupId>org.hibernate.validator</groupId><artifactId>hibernate-validator</artifactId><version>6.0.7.Final</version>
</dependency>
Springboot引入web依赖时会带上上面的依赖,因此不需显示引入
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>
在实体类标注校验注解
每个注解都有message属性,用于填写校验失败时的异常描述信息,当校验失败时可以获取对应的message属性值
示例:
public class SysUser extends BaseEntity {@NotNull@NotEmpty@Length(max = 32)String username;@NotNull@NotEmpty@Length(max = 32)String password;@NotNull@Range(min = 0, max = 1)Integer sex;@NotNull@NotEmpty@Length(max = 16)String nickname;String avatar;
}
在控制层方法带上@Validated
/@Valid
开启参数校验
@Validated注解表示开启Spring的校验机制,支持分组校验,声明在入参上。
@Valid注解表示开启Hibernate的校验机制,不支持分组校验,声明在入参上
标注@Validated
/@Valid
的参数后面:
- 带上
BindingResult
对象时:当参数不符合时能通过BindingResult
对象直接获取不符合校验的message描述信息,并自行处理,返回结果 - 没有带上
BindingResult
对象时:当参数不符合时会直接返回400 Bad Request状态码和默认的错误的信息