Spring注解之@validated使用

时间:2023-01-09 17:51:57

概念

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,常用注解如下:

Spring注解之@validated使用