@ConfigurationProperties标识的类支持JSR-303校验

JSR 303 - Bean Validation 介绍及最佳实践

一、JSR-303简介
JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Validation,官方参考实现是Hibernate Validator。

此实现与 Hibernate ORM 没有任何关系。 JSR 303 用于对 Java Bean 中的字段的值进行验证。 
Spring MVC 3.x 之中也大力支持 JSR-303,可以在控制器中对表单提交的数据方便地验证。 
注:可以使用注解的方式进行验证

二、准备校验时使用的JAR
validation-api-1.0.0.GA.jar:JDK的接口; 
hibernate-validator-4.2.0.Final.jar是对上述接口的实现; 
log4j、slf4j、slf4j-log4j

三、JSR 303 基本的校验规则
空检查 
@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=) Validates that the annotated string is between min and max included.

日期检查 
@Past 验证 Date 和 Calendar 对象是否在当前时间之前,验证成立的话被注释的元素一定是一个过去的日期 
@Future 验证 Date 和 Calendar 对象是否在当前时间之后 ,验证成立的话被注释的元素一定是一个将来的日期 
@Pattern 验证 String 对象是否符合正则表达式的规则,被注释的元素符合制定的正则表达式,regexp:正则表达式 flags: 指定 Pattern.Flag 的数组,表示正则表达式的相关选项。

数值检查 
建议使用在Stirng,Integer类型,不建议使用在int类型上,因为表单值为“”时无法转换为int,但可以转换为Stirng为”“,Integer为null 
@Min 验证 Number 和 String 对象是否大等于指定的值 
@Max 验证 Number 和 String 对象是否小等于指定的值 
@DecimalMax 被标注的值必须不大于约束中指定的最大值. 这个约束的参数是一个通过BigDecimal定义的最大值的字符串表示.小数存在精度 
@DecimalMin 被标注的值必须不小于约束中指定的最小值. 这个约束的参数是一个通过BigDecimal定义的最小值的字符串表示.小数存在精度 
@Digits 验证 Number 和 String 的构成是否合法 
@Digits(integer=,fraction=) 验证字符串是否是符合指定格式的数字,interger指定整数精度,fraction指定小数精度。 
@Range(min=, max=) 被指定的元素必须在合适的范围内 
@Range(min=10000,max=50000,message=”range.bean.wage”) 
@Valid 递归的对关联对象进行校验, 如果关联对象是个集合或者数组,那么对其中的元素进行递归校验,如果是一个map,则对其中的值部分进行校验.(是否进行递归验证) 
@CreditCardNumber信用卡验证 
@Email 验证是否是邮件地址,如果为null,不进行验证,算通过验证。 
@ScriptAssert(lang= ,script=, alias=) 
@URL(protocol=,host=, port=,regexp=, flags=)

四、案例分析
在使用的时候直接对JavaBean进行注解既可以实现对属性的验证

对配置文件的映射JavaBean进行校验

@Component
@ConfigurationProperties(prefix = "person")
@Validated
public class Person {//lastName必须是邮箱格式
  @Email //@Value("${person.last‐name}") private String lastName; //@Value("#{11*2}")private Integer age;//@Value("true")private Boolean boss;private Date birth;private Map<String,Object> maps;private List<Object> lists;private Dog dog;
}

转载于:https://www.cnblogs.com/guchunchao/p/9853311.html

JSR-303 数据校验学习相关推荐

  1. SpringMVC 数据的格式化、JSR 303数据校验和国际化

    SpringMVC 数据的格式化.JSR 303数据校验和国际化 转载于:https://www.cnblogs.com/lusufei/p/7400963.html

  2. jsr 正则验证_JSR-303 数据校验学习

    一.JSR-303简介 JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Validation,官方参考实现是Hibernate Validator. 此实现与 Hibernat ...

  3. 如何使用JSR 303 进行后台数据校验?

    文章目录 一.JSR 303 1.什么是 JSR 303? 2.为什么使用 JSR 303? 3.JSR 303 常见操作? 二.使用 JSR 303 相关注解处理逻辑 1.JSR 303 注解处理逻 ...

  4. java学习笔记——springmvc 之 数据自定义转换器 数据格式化 JSR303数据校验返回与接收JSON(@RequestBody 和 @ResponseBody)

    九.数据绑定流程分析 1.提出问题 日期字符串格式的表单参数,提交后转换为Date类型 <!--    解决问题: 1.数据类型转换 2.数据格式 3.数据校验 --> BirthDay ...

  5. SilverLight学习笔记--实际应用(一)(4):手把手建立一个Silverlight应用程序之同步数据校验1...

    现在我们的程序有了添加和删除以及修改功能,下面我们看一看如何让程序具备数据校验功能.我们将用两种方式实现数据的校验,一种是在客户端进行同步校验.另一种是在服务器端进行异步校验.   本篇我们先实现如何 ...

  6. C1认证学习三(数据校验)

    C1认证学习三(数据校验) 文章目录 C1认证学习三(数据校验) 数据校验 任务背景 校验的方法 奇偶校验 数据校验 这是第三个笔记:数据的校验. 任务背景 在数据传输的过程中,会受到各种各样的干扰. ...

  7. Spring boot的Bean使用JSR 303校验

    @Validated 验证注解 添加在验证的Bean上 @Validated public class Person { 就可以直接在属性上 使用JSR 303提供的,默认约束规则 //lastNam ...

  8. 让Spring 3中jsp的数据对象使用懒加载(FetchType.LAZY)与Controller的JSR 303并存

    本文出处:http://blog.csdn.net/chaijunkun/article/details/9083171,转载请注明.由于本人不定期会整理相关博文,会对相应内容作出完善.因此强烈建议在 ...

  9. JSR 303 - Bean Validation 简介及使用方法

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 一.JSR-303简介 JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Va ...

最新文章

  1. R语言广义线性模型Logistic回归模型C Statistics计算
  2. 什么是 DDos 攻击
  3. vector函数python_Smooth Support Vector Regression - Python实现
  4. RabbitMQ学习及实践3--SpringMVC实现
  5. 你确定不反编译 likely 看看?
  6. 抛体运动的小框架的源代码(rar)
  7. mysql 从库relay_MySQL主库binlog(master-log)与从库relay-log关系代码详解
  8. 【BZOJ2594】水管局长加强版,LCT+并查集+二分查找位置
  9. ST_Geometry效率的测试与分析
  10. python uwsgi_uwsgi的多站点配置
  11. lambda函数 java_使用 Java 构建 Lambda 函数 - AWS Lambda
  12. 目标检测(二十)--Mask R-CNN
  13. 校园客户端linux创翼,电信创翼校园客户端-电信创翼校园网客户端下载 4.7.9.589 官方版 - 河东下载站...
  14. 在做模具设计过程中应注意哪些问题
  15. 微信小号赚钱(转载)
  16. HDU 6617 Enveloping Convex(凸包+半平面交+二分)
  17. FXS与FXO接口的区别及应用
  18. 使用百度地图时如何隐藏百度地图logo
  19. 关于RedisTemplate的ERR EXEC without MULTI错误
  20. 申请计算机博士需要的论文,计算机科学与技术学院申请博士学位发表学术论文的规定(2008.9上网).doc...

热门文章

  1. 对Vue生命周期的一些简单见解
  2. 鸿蒙官网什么样,鸿蒙系统推广,结果会怎么样?
  3. xml生成java代码_在Eclipse中从XML生成Java代码
  4. linux c语言 udp 接收和发送数据用同一个端口_【Python学习笔记】80、UDP编程
  5. java在线打开xml文件_java实现简单解析XML文件功能示例
  6. java 植入 form_pdf form表单制作以及用java程序填充表单
  7. mysql join 条件_MySQL Join 竟然可以这么玩?根据条件 进行复制
  8. 和大家分享2015年我逐步形成的六个管理认识
  9. 通达信副图指标公式:买卖黄金线(抄底用)
  10. Facebook开源新NLP框架:简化部署流程,大规模应用也OK