@Valid注解详解
- @Valid 用于验证注解是否符合要求,直接加在变量user之前,在变量中添加验证信息的要求,当不符合要求时就会在方法中返回message 的错误提示信息。
@RestController@RequestMapping("/user")public class UserController {@PostMappingpublic User create (@Valid @RequestBody User user) {System.out.println(user.getId());System.out.println(user.getUsername());System.out.println(user.getPassword());user.setId("1");return user;}}
- 然后在 User 类中添加验证信息的要求:
public class User {private String id;@NotBlank(message = "密码不能为空")private String password;}
@NotBlank 注解所指的 password 字段,表示验证密码不能为空,如果为空的话,上面 Controller 中的 create 方法会将message 中的"密码不能为空"返回。
当然也可以添加其他验证信息的要求:
限制 | 说明 |
---|---|
@Null | 限制只能为null |
@NotNull | 限制必须不为null |
@AssertFalse | 限制必须为false |
@AssertTrue | 限制必须为true |
@DecimalMax(value) | 限制必须为一个不大于指定值的数字 |
@DecimalMin(value) | 限制必须为一个不小于指定值的数字 |
@Digits(integer,fraction) | 限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction |
@Future | 限制必须是一个将来的日期 |
@Max(value) | 限制必须为一个不大于指定值的数字 |
@Min(value) | 限制必须为一个不小于指定值的数字 |
@Past | 限制必须是一个过去的日期 |
@Pattern(value) | 限制必须符合指定的正则表达式 |
@Size(max,min) | 限制字符长度必须在min到max之间 |
@Past | 验证注解的元素值(日期类型)比当前时间早 |
@NotEmpty | 验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0) |
@NotBlank | 验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格 |
验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式 |
- 除此之外还可以自定义验证信息的要求,例如下面的 @MyConstraint:
public class User {private String id;@MyConstraint(message = "这是一个测试")private String username;}
注解的具体内容:
@Constraint(validatedBy = {MyConstraintValidator.class})@Target({ELementtype.METHOD, ElementType.FIELD})@Retention(RetentionPolicy.RUNTIME)public @interface MyConstraint {String message();Class<?>[] groups() default {};Class<? extends Payload>[] payload() default {};}
- 下面是校验器:
public class MyConstraintValidator implements ConstraintValidator<MyConstraint, Object> {@Autowiredprivate UserService userService;@Overridepublic void initialie(@MyConstraint constarintAnnotation) {System.out.println("my validator init");}@Overridepublic boolean isValid(Object value, ConstraintValidatorContext context) {userService.getUserByUsername("seina");System.out.println("valid");return false;}}
@Valid注解详解相关推荐
- @Valid 注解详解 Java Bean Validation的前世今生
Spring @Valid 注解 校验实体属性 1 @Valid 介绍 1.1 前言 1.2 Bean Validation 1.3 关于validation包 1.3 关于Spring Hibern ...
- spring-boot注解详解(一)
spring-boot注解详解(一) @SpringBootApplication @SpringBootApplication = (默认属性)@Configuration + @EnableAut ...
- Hibernate Validation校验注解详解
在前后端传递数据的时候,往往后端需要校验传递数据的格式,比如用户名的格式,密码是否为空.我们可以在service层编写代码判断,但是当我们在多处需要校验传递来的数据的时候,就会出现大量重复的代码,一旦 ...
- SpringMVC学习:控制层(Controller)基于注解详解
文章目录 一.URL映射Controller的方法返回值 二.SpringMVC各类注解详解 (一) @Controller (二) @RequestMapping 1.基本用法 2. path属性或 ...
- 26.SpringBoot事务注解详解
转自:https://www.cnblogs.com/kesimin/p/9546225.html @Transactional spring 事务注解 1.简单开启事务管理 @EnableTrans ...
- mybatis注解详解
mybatis注解详解 首 先当然得下载mybatis-3.0.5.jar和mybatis-spring-1.0.1.jar两个JAR包,并放在WEB-INF的lib目录下 (如果你使用maven,则 ...
- 开启注解缓存_Spring Boot 2.x基础教程:进程内缓存的使用与Cache注解详解
随着时间的积累,应用的使用用户不断增加,数据规模也越来越大,往往数据库查询操作会成为影响用户使用体验的瓶颈,此时使用缓存往往是解决这一问题非常好的手段之一.Spring 3开始提供了强大的基于注解的缓 ...
- Spring零配置之@Configuration注解详解
转载自 Spring零配置之@Configuration注解详解 @Configuration介绍 Spring3.0之前要使用Spring必须要有一个xml配置文件,这也是Spring的核心文件,而 ...
- Spring Boot注解详解
文章目录 使用注解的优势 注解详解(配备了完善的释义) 注解列表如下 JPA注解 springMVC相关注解 全局异常处理 项目中具体配置解析和使用环境 使用注解的优势 采用纯java代码,不在需要配 ...
最新文章
- Android被逼学习例子2
- 主要技术指标简介_期货常用技术指标(五)布林线
- OSI七层模型的作用
- linux下python开发工具_Python开发工具 Wing IDE
- VC++ 结束线程 AfxBeginThread AfxEndThread
- opencv python3 找图片不同_使用OpenCV和Python查找图片差异
- java伪随机数(菜鸟教程)
- c语言观察程序流程图,程序流程图的画法
- Unity新手开发VR项目
- 布兰迪斯大学计算机美国大学排名,布兰迪斯大学排名多少 美国和世界排名介绍...
- IjkVideoView的视频宽高比怎么设置
- 西门子TIA V17发布,附下载链接<EKB>
- 金蝶协同办公平台任意文件下载漏洞(无需登录)
- move_base学习(一)之双激光差动式移动机器人导航仿真
- 宽带不能上传发文件_光纤宽带和普通宽带的区别
- Python 爬虫之urllib库的使用
- 泡沫经济中的移动开发者
- 【转载】2019 年,国内博士后的招聘要求和待遇是怎样的?
- 侠客风云传服务器维护,侠客风云传开服表
- 计算机没法安装打印程序,无法安装打印机怎么办 无法安装打印机解决方法【图文教程】...