专栏首页步履前行Java Validation Api

Java Validation Api

在我们应用程序的业务逻辑中,经常会碰到参数教研的情况,比如在Controller中,我们的参数是一个Entity的时候,经常要判断这个Entity的字段是否是null之类或者是长度等。通常来讲,我们用比如StringUtils或者是if等来进行教研,这样在我们的代码层上面就会带来很不好的体验,阅读、维护的成本会大大增加,造成冗余。因此有了这个JSR 303。

  Bean Validation为JavaBean提供了相应的API来给我们做参数的验证。通过Bean Validation比如@NotNull @Pattern等方法来对我们字段的值做进一步的教研。

Bean Validation 是一个运行时框架,在验证之后错误信息会直接返回。

这是核心注解 @Valid,可以看出是在RUNTIME。

接下来我们看下相关的注解

这是javax.validation包中的 主要包括上述的几个注解

注解

描述

@AssertFalse

被注释的元素必须为 false

@AssertTrue

同@AssertFalse

@DecimalMax

被注释的元素必须是一个数字,其值必须小于等于指定的最大值

@DecimalMin

同DecimalMax

@Digits

被注释的元素是数字

@Future

将来的日期

@Max

被注释的元素必须是一个数字,其值必须小于等于指定的最大值

@Min

被注释的元素必须是一个数字,其值必须大于等于指定的最小值

@NotNull

不能是Null

@Null

元素是Null

@Past

被注释的元素必须是一个过去的日期

@Pattern

被注释的元素必须符合指定的正则表达式

@Szie

被注释的元素

上面标红的是楼主经常遇到的

接下来是org.hibernate.validator.constraints包中的

注解

描述

@Email

元素必须是格式良好的电子邮箱地址

@Length

字符串的大小必须在指定的范围内,有min和max参数

@NotEmpty

字符串的不能是空

@NotBlank

字符串不能使空,但是与@NotEmpty不同的是尾随的空白被忽略

@URL

字符串必须是一个URL


 这是一个DTO,我们在里边做了一些验证

或者我们可以使用自定义的注解来操作

注意,在我们调用加了验证注解的DTO中,我们需要在DTO的前边加入@Valid

例如

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java代理IP

    最近在搞爬虫,因为爬取量大,经常导致封IP的现象,(网上投票也经常遇到限制Ip的破事),就自己准备写个,找了很多的文献(也就是很多google),所说的要不就是...

    haoming1100
  • Java Stream distinct

      在使用Java Stream 进行过滤的时候,比如有一个User 类,然后有 type字段,我们想去除的话,用传统的语法来操作是比较麻烦的,比如可以Map<...

    haoming1100
  • 关系型数据库与非关系型数据库

      当前我们各种高并发的时代下,NoSql正以大规模侵袭的状态下入侵SQL界,我们现在很普及的关系数据库如mysql、oracle、DB2、Microsoft的...

    haoming1100
  • HCI横向扩展架构强化网络

    超融合基础设施(HCI)正在数据中心里越来越火热,根据451 Research近期发布的一项调查发现,40%的IT组织已经部署了HCI平台。 HCI是融合基础设...

    SDNLAB
  • 为什么CRM Opportunity的删除会触发一个通向BW系统的RFC

    版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。 https://jerry.bl...

    Jerry Wang
  • 摩根纽约总部量化女神手把手教你学Python机器学习与量化交易

    “量化投资”是指投资者使用数理分析、计算机编程技术、金融工程建模等方式,通过对样本数据进行集中比对处理,找到数据之间的关系,制定量化策略,并使用编写的软件程序来...

    Python中文社区
  • Hadoop数据分析平台实战——080HBase介绍和安装离线数据分析平台实战——080HBase介绍和安装

    离线数据分析平台实战——080HBase介绍和安装 HBase介绍 HBase是参考google的bigtable的一个开源产品, 建立在hdfs之上的一个提...

    Albert陈凯
  • 前端进阶第4周打卡题目汇总

    1. 解释一下在js里,0.1+0.2为什么等于0.30000000000000004,如何通过代码解决这个问题?

    徐小夕
  • 为什么新兴的亚太市场未来是恶意软件的主要目标?

    用户1697231
  • 一段探索React自建内部构造的旅程

    在先前的文章里我们涵盖了React基本原理和如何构建更加复杂的交互组件。此篇文章我们将会继续探索React组件的特性,特别是生命周期。

    一个会写诗的程序员

扫码关注云+社区

领取腾讯云代金券