26.1. 从零开始学springboot-数据校验

前言

对于任何一个应用而言,客户端做的数据有效性验证都不是安全有效的,而数据验证又是一个企业级项目架构上最为基础的功能模块,这时候就要求我们在服务端接收到数据的时候也对数据的有效性进行验证。

JSR-303

JSR 是Java Specification Requests 的缩写,是指向 JCP(Java Community Process) 提出新增一个标准化技术规范的正式请求。
任何人都可以提交 JSR,以向 Java 平台增添新的 API 和服务,已审核通过的规范涉及 Java 各个领域,有兴趣可以了解一下。
Bean Validation 是一个运行时的数据验证框架,为 JavaBean 验证定义了相应的元数据模型和 API。
默认的元数据是 Java Annotations,当然也可以使用 XML 可以对已存在的元数据信息进行覆盖和扩展。
在应用中通过使用 Bean Validation 或是你自己定义的 constraint,例如 @NotNull, @Max, @ZipCode, 就可以确保数据模型的正确性。
constraint 可以注解到字段,getter 方法,类或者接口上面。对于一些特定的需求,用户可以很容易的开发定制化的 constraint。

检验注解

JSR提供的校验注解:
@Null 被注释的元素必须为 null
@NotNull 被注释的元素必须不为 null
@AssertTrue 被注释的元素必须为 true
@AssertFalse 被注释的元素必须为 false
@Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max=, min=) 被注释的元素的大小必须在指定的范围内
@Digits (integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past 被注释的元素必须是一个过去的日期
@Future 被注释的元素必须是一个将来的日期
@Pattern(regex=,flag=) 被注释的元素必须符合指定的正则表达式

Hibernate Validator提供的校验注解:
@NotBlank(message =) 验证字符串非null,且trim后长度必须大于0
@Email 被注释的元素必须是电子邮箱地址
@Length(min=,max=) 被注释的字符串的大小必须在指定的范围内
@NotEmpty 被注释的字符串的必须非空
@Range(min=,max=,message=) 被注释的元素必须在合适的范围内

使用

实体类

package com.mrcoder.sbexceptionvalidator.model;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Setter
@Getter
public class Person {
    @NotNull(message = "id非空")
    private Integer id;
    @NotBlank(message = "name非空")
    private String name;
}

控制类

    @PostMapping("/add")
    public ResponseInfo add(@Valid @RequestBody Person person) {
        return ResponseInfo.success("success");
    }

项目地址

https://github.com/MrCoderStack/SpringBootDemo/tree/master/sb-exception-validator

请关注我的订阅号

订阅号.png

你可能感兴趣的:(26.1. 从零开始学springboot-数据校验)