概念
spring-boot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理。
注解源码:
@Validated 作用在类、方法和参数上
@Target({ElementType.TYPE, ElementType.METHOD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Validated {
Class<?>[] value() default {};
}
依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
spring-boot-starter-web已经引入了基础包,所以直接使用就可以了,没必要单独引入此依赖
使用(在controller中使用)
方法接收参数的实体类上使用
/**
* 注册接口
*
* @param registerDTO
* @return
*/
@ApiOperation("注册接口(账户、昵称不能重复)[不需要token]")
@PostMapping("register")
public ResponseVO<Object> register(@RequestBody @Validated RegisterDTO registerDTO) throws InterruptedException {
log.info("请求接口 /netsadcloud/user/register 参数:{}", JSON.toJSONString(registerDTO));
return userService.register(registerDTO);
}
实体类
/**
* @author Boss
*/
@ApiModel("注册DTO")
@Data
public class RegisterDTO {
@ApiModelProperty(value = "账户(小于等于12位,大于等于8位字符)", required = true)
@Size(max = 12,min = 8)
@NotBlank
private String account;
@ApiModelProperty(value = "密码(小于等于12位,大于等于8位字符)", required = true)
@Size(max = 12,min = 8)
@NotBlank
private String password;
@ApiModelProperty(value = "昵称(小于等于12位,大于等于8位字符)", required = true)
@Size(max = 12,min = 8)
@NotBlank
private String name;
}
常用注解类型
注意,不要错用了异常类型,比如在int上不可用@size,常用注解如下: