Springboot @Validated和@Valid的区别 及使用

@Valid是使用Hibernate validation的时候使用

@Validated是只用Spring Validator校验机制使用

说明:java的JSR303声明了@Valid这类接口,而Hibernate-validator对其进行了实现

@Validation对@Valid进行了二次封装,在使用上并没有区别,但在分组、注解位置、嵌套验证等功能上有所不同,这里主要就这几种情况进行说明。

注解位置:
@Validated:用在类型、方法和方法参数上。但不能用于成员属性(field)

@Valid:可以用在方法、构造函数、方法参数和成员属性(field)上

● @Validated:提供分组功能,可以在参数验证时,根据不同的分组采用不同的验证机制
● @Valid:没有分组功能

举例说明

@Data
public class Student implements Serializable {@NotBlank(message = "用户名不能为空")private String name;//只在分组为IGroupB的情况下进行验证@Min(value = 18, message = "年龄不能小于18岁", groups = {IGroupB.class})private Integer age;@Pattern(regexp = "^((13[0-9])|(14[5,7,9])|(15([0-3]|[5-9]))|(166)|(17[0,1,3,5,6,7,8])|(18[0-9])|(19[8|9]))\\d{8}$", message = "手机号格式错误")private String phoneNum;@Email(message = "邮箱格式错误")private String email;}
@RestController
@RequestMapping("/test")
public class TestController {@PostMapping("/student")public String addStudent(@Validated({IGroupA.class}) @RequestBody Student student){return "add student success";}
}
package com.zt.dbu.mod.csp.controller.test;public interface IGroupA {
}public interface IGroupB {
}

 使用GroupA分组时候不校验

 进行GroupB分组时候进行校验


@RestController
@RequestMapping("/test")
public class TestController {@PostMapping("/student")public String addStudent(@Validated({IGroupB.class}) @RequestBody Student student){return "add student success";}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/576168.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【dp】CF17C. Balance

http://codeforces.com/problemset/problem/17/C 题目中给出一个仅含有a,b,c的字符串,已经两种操作每次选出任意两个相邻的字符,用第一个覆盖掉第二个或者反之,最后询问不考虑操作次数,最终有多少种不同的序列其中a,b,…

git常用的命令收集

1.强制推送(慎用,除非你认为其他冲突等可以丢弃 或者不是很重要)git push -- force git—全局设置用户名、密码、邮箱 git config命令的–global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置&…

git文件操作命令

1.创建文件等小命令 touch a // 创建一个a文件 echo 1234 >> a // 把1234这个内容放入a文件 cat a // 打开a文件 读取出a文件中的内容 mkdir test // 创建test文件夹 rm 文件名 // 删除文件 pwd // 打印当前工作路径2.安装git的时候 都会安装git bash和git GUI 我们完全也…

ECSHOP设置默认配送方式和默认支付方式

用过ECSHOP的站长都知道,首次登陆ECSHOP进行购物的时候,购物流程中没有“默认配送方式和默认支付方式”这个功能 即使网站上只有一种配送方式,它也不会默认选中这个唯一的配送方式。 当你的网站只有一种配送方式,或者,…

spring如何解决循环依赖

什么是循环依赖? 循环依赖其实是指两个及以上bean相互持有对方,最终形成闭环的过程(一般聊循环依赖都是默认的单例bean),简单说就是A依赖B,B依赖C,C又依赖A。 下面我就借用别人的网图来解释下: 注意&#…

利用Frame Animation实现动画效果,代码正确,就是达不到变换效果

就是因为把第一帧图片设置成了ImageView的src资源,从而一直覆盖在变换效果之上,去掉ImageView的src属性即可解决。 要想使应用已载入便播放动画效果,直接将 animationDrawables.start(); 放在activity的各种回调函数中(onCreate、…

【电信增值业务学习笔记】3 语音类增值业务

作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.一卡多号:(Single SIM Multiple Number -SSMN) 为拥有一个SIM卡的移动用户提供多个电话号码作为副号码主叫:可以选择用主号码还是副号码发起呼叫被叫&a…

循环依赖源码深度解析

singletonObjects (一级缓存)它是我们最熟悉的朋友,俗称“单例池”“容器”,缓存创建完成单例Bean的地方。 earlySingletonObjects(二级缓存)映射Bean的早期引用,也就是说在这个Map里的Bean不是…

java获取异常堆栈详情

/** * 获取exception详情信息 * * param e * Excetipn type * return String type */ public static String getExceptionDetail(Exception e) { StringBuffer msg new StringBuffer("null"); if (e ! null) { msg new StringBuffer(""); String messag…

多线程间共享变量线程安全问题——ThreadLocal

Java并发编程中很重要的类:ThreadLocal 在多线程应用程序中,对共享变量进行读写的场景是很常见的。如果不使用一定的技术或方案,会引发各种线程安全的问题。常见解决线程安全的方式有synchronized、volatile等方式,但synchronized…

我的学生时代之一[小学时代]

真是岁月如梭~ 猛然间这么一掐指,我都毕业4年有余了。先前工作一直不如意,到现在好一点点。 有时候一想,挺怀念上学的时光。 真的是回不去了~ 我又记得多少同学的名字?朋友还有多少常联系的?不很多~ 今天,突…

java8流式操作

简介:Stream 中文称为 “流”,通过将集合转换为这么一种叫做 “流” 的元素序列,通过声明性方式,能够对集合中的每个元素进行一系列并行或串行的流水线操作。 操作分类: .stream() stream()把一个源数据,可…

web.config中httpRunTime的属性

配置httpRuntime也可以让FileUpload上传更大的文件,不过设置太大了会因用户将大量文件传递到该服务器而导致的拒绝服务攻击(属性有说明) <httpRuntime> <httpRuntime useFullyQualifiedRedirectUrl"true|false" maxRequestLength"size in kbytes"…

创建并运用客户化jsp标签

1.在WEB-INF目录下新建message.properties属性文件 文件内容为“key-value”对&#xff0c;添加测试内容如下&#xff1a;titlehello world bodyhello taglib 2.定义初始化类TaglibInit&#xff0c;用…

ArrayList源码阅读

private static void extracted() {ArrayList<StudentVO> arrayList new ArrayList<StudentVO>();arrayList.add(new StudentVO("张三", 23));arrayList.add(new StudentVO("李四", 24));arrayList.add(new StudentVO("王五", 24))…

常用的JS小功能整理

<a href"#" onclick "this.style.behaviorurl(#default#homepage);this.sethomepage(http://www.mingrisoft.com)" style" color:Black; font-size: 9pt; font-family: 宋体; text-decoration :none;" >设置主页</a> <a href&quo…

类的加载过程

类的加载过程 代码 public class Father{private int i test();private static int j method();static{System.out.print("(1)");}Father(){System.out.print("(2)");}{System.out.print("(3)");)public int test(){System.out.print("(…

微软企业库调用Oracle分页存储过程

存储过程&#xff1a;CREATE OR REPLACE PACKAGE pkg_tableTypeIS procedure FY( TableName varchar2, -- 表名getFields varchar2, -- 字段名(全部字段为*) OrderField varchar2, -- 排序字段(必须!支持多字段) whereCondition varchar2, -- 条件语句(不用加where) pageSize i…

Windows服务无法引用.dll的错误

项目中需要使用.NET开发Windows服务来检测MSMQ&#xff0c;但一直无法引用.dll(特别是.dll引用了其它的.dll)&#xff0c;最后google找到了答案&#xff1a; Every window service project, by default targets to .netClient version (which is not full version of .net and …

TC第一次成为room leader

虽然第二题竟然最后没通过system test&#xff0c;用递归的方法超时了 还好challenge 3个&#xff0c;以微弱优势胜过第二名 happy&#xff01; 继续努力转载于:https://www.cnblogs.com/fstang/archive/2012/12/21/2827345.html