2022.6.10 JSR303数据校验@validated

5、JSR303数据校验@validated

Springboot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理。我们这里来写个注解让我们的name只能支持Email格式,在name变量上添加@Email

添加依赖

       <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-validation -->
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-validation</artifactId>
             <version>2.7.0</version>
         </dependency>

Person

 package com.xing.pojo;
 ​
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.context.annotation.PropertySource;
 import org.springframework.stereotype.Component;
 import org.springframework.validation.annotation.Validated;
 ​
 import javax.validation.constraints.Email;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
 ​
 /**
  * @program: springboot-02-config
  * @ClassName:Person
  * @Date: 2022/06/09
  * @author: 16159
  * @description:
  * @Modified By:
  **/
 @Component //注册bean到容器中
 @Data
 @AllArgsConstructor
 @NoArgsConstructor
 @ConfigurationProperties(prefix = "person")
 @Validated //开启数据校验
 public class Person {
 ​
     @Email
     private String name;
     private Integer age;
     private Boolean happy;
     private Date birth;
     private Map<String,Object> maps;
     private List<Object> lists;
     private Dog dog;
 ​
 }
 ​

application.yaml

 person:
  name: xiaoming${random.uuid} # 随机uuid
  age: ${random.int}  # 随机int
  happy: false
  birth: 2000/01/01
  maps: {k1: v1,k2: v2}
  lists:
    - code
    - girl
    - music
  dog:
    name: ${person.hello:other}_旺财
    age: 1

运行结果 :default message [不是一个合法的电子邮件地址];

 

 

 

使用数据校验,可以保证数据的正确性;

常见参数

 @NotNull(message="名字不能为空")
 private String userName;
 @Max(value=120,message="年龄最大不能查过120")
 private int age;
 @Email(message="邮箱格式错误") //message为报错输出的信息
 private String email;
 ​
 空检查
 @Null       验证对象是否为null
 @NotNull    验证对象是否不为null, 无法查检长度为0的字符串
 @NotBlank   检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.
 @NotEmpty   检查约束元素是否为NULL或者是EMPTY.
     
 Booelan检查
 @AssertTrue     验证 Boolean 对象是否为 true  
 @AssertFalse    验证 Boolean 对象是否为 false  
     
 长度检查
 @Size(min=, max=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内  
 @Length(min=, max=) string is between min and max included.
 ​
 日期检查
 @Past       验证 Date Calendar 对象是否在当前时间之前  
 @Future     验证 Date Calendar 对象是否在当前时间之后  
 @Pattern    验证 String 对象是否符合正则表达式的规则
 ​
 .......等等
 除此以外,我们还可以自定义一些数据校验规则
posted @   暴躁C语言  阅读(133)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示