现在基本上都是前后端分离项目, 后端返回json数据给前端, 前端传参一般是也是传json。
后台controller用@RequestBody修饰, 如示例,如果不使用@Validated那么service就得判断账号密码是否为空,在很多场景下,前端会传大量参数过来,这个时候就可以节省效率了。
情形1:
前端什么都不传,在请求为到达controller前HttpRequestMethodNotSupportedException。
情形2:
假设前端传参为空json{}, service中的login方法未对相关参数做校验就直接使用,就会发生NPE。这个时候就可以是用@Validated。
自定义增删改查注解,在vo对象上使用jsr-303约束。
groups参数上使用自定义的增删改查注解,在controller形参上使用@Validated(Select.class)。而后MethodArgumentNotValidException。
SpringBoot参数验证
Spring Validation 验证框架对参数的验证机制提供了@Validated (Spring's JSR-303 规范,是标准 JSR-303 的一个变种),javax 提供了@Valid(标准 JSR-303 规范)。
配合 BindingResult 可以直接提供参数验证结果。其中对于字段的特定验证注解,比如 @NotNull。两者在检验 Controller 的入参是否符合规范时,使用@Validated 或者 @Valid 在基本验证功能上没有太多区别。