Java Bean参数验证:深入探索javax.validation.constraints注解

在Java应用开发中,尤其是涉及到Web服务和数据处理时,确保传入的数据符合预期是非常重要的。javax.validation.constraints包提供了一系列强大的注解,用于简化这一过程。这些注解基于JSR 303/JSR 349规范,能够帮助开发者以声明式的方式执行参数验证,而无需手动编写复杂的校验逻辑。下面我们将逐一介绍这些注解,并提供示例说明其适用场景和字段类型。

1. 布尔值验证

@AssertFalse

  • 用途:确保被注解的字段必须为false
  • 适用字段类型boolean, Boolean
  • 示例
    @AssertFalse
    private boolean inactive;
    

@AssertTrue

  • 用途:确保被注解的字段必须为true
  • 适用字段类型boolean, Boolean
  • 示例
    @AssertTrue
    private boolean isActive;
    

2. 数值范围验证

@DecimalMax(value)

  • 用途:限制数值最大值(包括小数)。
  • 适用字段类型BigDecimal, BigInteger, double, float
  • 示例
    @DecimalMax("99.99")
    private BigDecimal price;
    

@DecimalMin(value)

  • 用途:限制数值最小值(包括小数)。
  • 适用字段类型:同上
  • 示例
    @DecimalMin("1.00")
    private double discount;
    

@Digits(integer, fraction)

  • 用途:控制数字的整数部分和小数部分位数。
  • 适用字段类型:同上
  • 示例
    @Digits(integer=5, fraction=2)
    private float measurement;
    

@Max(value)

  • 用途:限制数值最大值(整数)。
  • 适用字段类型byte, short, int, long, BigDecimal, BigInteger
  • 示例
    @Max(100)
    private int quantity;
    

@Min(value)

  • 用途:限制数值最小值(整数)。
  • 适用字段类型:同上
  • 示例
    @Min(0)
    private long serialNumber;
    

@Negative

  • 用途:确保数值为负。
  • 适用字段类型:同上(不包括BigDecimal, BigInteger的小数情况)
  • 示例
    @Negative
    private int temperatureDelta;
    

@NegativeOrZero

  • 用途:确保数值为负或零。
  • 适用字段类型:同上
  • 示例
    @NegativeOrZero
    private short adjustment;
    

@Positive

  • 用途:确保数值为正。
  • 适用字段类型:同上
  • 示例
    @Positive
    private long populationCount;
    

@PositiveOrZero

  • 用途:确保数值为正或零。
  • 适用字段类型:同上
  • 示例
    @PositiveOrZero
    private int score;
    

3. 字符串和集合验证

@Email

  • 用途:验证字符串是否符合电子邮件地址的格式。
  • 适用字段类型String
  • 示例
    @Email
    private String userEmail;
    

@Future

  • 用途:确保日期在未来。
  • 适用字段类型Date, LocalDate, LocalDateTime, ZonedDateTime
  • 示例
    @Future
    private LocalDate expirationDate;
    

@FutureOrPresent

  • 用途:确保日期在未来或现在。
  • 适用字段类型:同上
  • 示例
    @FutureOrPresent
    private LocalDateTime lastUpdate;
    

@NotBlank

  • 用途:确保字符串非空且不只包含空白字符。
  • 适用字段类型CharSequence(如String
  • 示例
    @NotBlank
    private String password;
    

@NotEmpty

  • 用途:确保集合、数组或字符串非空。
  • 适用字段类型Array, Collection, Map, CharSequence
  • 示例
    @NotEmpty
    private List<String> tags;
    

@NotNull

  • 用途:确保字段不为null
  • 适用字段类型:所有类型
  • 示例
    @NotNull
    private User createdBy;
    

@Null

  • 用途:确保字段为null
  • 适用字段类型:所有类型
  • 示例
    @Null
    private transient String temporaryData;
    

@Past

  • 用途:确保日期在过去。
  • 适用字段类型:同日期相关类型
  • 示例
    @Past
    private Date birthDate;
    

@PastOrPresent

  • 用途:确保日期在过去或现在。
  • 适用字段类型:同上
  • 示例
    @PastOrPresent
    private LocalDateTime createdAt;
    

@Pattern(regexp)

  • 用途:使用正则表达式匹配字符串。
  • 适用字段类型CharSequence
  • 示例
    @Pattern(regexp = "^\\d{3}-\\d{2}-\\d{4}$")
    private String ssn;
    

@Size(min, max)

  • 用途:限制字符串、集合、数组的长度。
  • 适用字段类型Array, Collection, Map, CharSequence
  • 示例
    @Size(min = 6, max = 20)
    private String username;
    

以上注解大大简化了Java Bean参数的验证工作,提高了代码的可读性和维护性。在Spring Boot等框架中,它们通常与方法参数验证、数据绑定机制结合使用,为API开发提供了强大的支持。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于springboot实现夕阳红公寓管理系统项目【项目源码+论文说明】

基于springboot实现夕阳红公寓管理系统演示 摘要 如今社会上各行各业&#xff0c;都在用属于自己专用的软件来进行工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。互联网的发展&#xff0c;离不开一些新的技术&#xff0c;而新技术的产生往往是…

ASP.NET网上鲜花销售系统的设计

摘 要 本系统实现了一般电子商务所具备的功能&#xff0c;如商品浏览、用户登录注册、网上与购物、结算、后台数据库管理等&#xff0c;利用这些功能可以对鲜花销售信息进行较好的管理。 网上鲜花销售系统的使用者主要是客户和销售管理者&#xff0c;对于客户来说&#xff0…

欧式聚类提取-------PCL

欧式聚类 std::vector<pcl::PointCloud<pcl::PointXYZ>::Ptr> PclTool::euclideanClustering(const pcl::PointCloud<pcl::PointXYZ>::Ptr& cloud) {std::vector<pcl::PointCloud<pcl::PointXYZ>::Ptr> clustered_clouds;// 下采样pcl::Vox…

基于FPGA的DDS波形发生器VHDL代码Quartus仿真

名称&#xff1a;基于FPGA的DDS波形发生器VHDL代码Quartus仿真&#xff08;文末获取&#xff09; 软件&#xff1a;Quartus 语言&#xff1a;VHDL 代码功能&#xff1a; DDS波形发生器VHDL 1、可以输出正弦波、方波、三角波 2、可以控制输出波形的频率 DDS波形发生器原理…

学习和分析各种数据结构所要掌握的一个重要知识——CPU的缓存利用率(命中率)

什么是CPU缓存利用率&#xff08;命中率&#xff09;&#xff0c;我们首先要把内存搞清楚。 硬盘是什么&#xff0c;内存是什么&#xff0c;高速缓存是什么&#xff0c;寄存器又是什么&#xff1f; 我们要储存数据就要运用到上面的东西。首先里面的硬盘是可以无电存储的&#…

无人零售,重塑购物新纪元

在这个快节奏的时代&#xff0c;科技的每一次跃进都在悄无声息地改变着我们的生活方式。而今&#xff0c;无人零售正以雷霆之势&#xff0c;颠覆传统购物模式&#xff0c;为我们带来前所未有的便捷与智能体验。想知道无人零售如何彻底改变我们的购物方式吗&#xff1f;跟随我&a…

Linux实现Flappy bird项目

目录 1、项目介绍 2、功能总结 3、前期准备 3.1 Ncurses库 3.2 信号机制 3.2.1 设置信号响应方式 3.2.2 设置定时器 4、代码实现 4.1 头文件引用及变量、函数定义 4.2 主函数 4.3 curses初始化 4.4 设置定时器 4.5 定时器响应函数 4.6 小鸟控制相关函数 4…

Java的Fork-Join简单介绍

Java的Fork-Join框架是Java 7引入的一个用于并行处理的轻量级框架&#xff0c;它基于分治策略&#xff08;Divide and Conquer&#xff09;&#xff0c;特别适合于那些可以被分解为多个子任务的任务。Fork-Join框架的核心思想是将一个大任务&#xff08;Task&#xff09;拆分成…

毕业就业信息|基于Springboot+vue的毕业就业信息管理系统的设计与实现(源码+数据库+文档)

毕业就业信息管理系统 目录 基于Springboot&#xff0b;vue的毕业就业信息管理系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1学生信息管理 2 公司信息管理 3公告类型管理 4公告信息管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设…

高等数学笔记(下中)

曲线积分 第一类曲线积分&#xff1a;对弧长的积分计算方法 定理&#xff1a;设 f ( x , y ) f(x,y) f(x,y)在曲线弧 L L L上有定义且连续&#xff0c; L L L的参数方程是 { x φ ( t ) y ψ ( t ) ( α ≤ t ≤ β ) \begin{cases} x\varphi(t)\\ y\psi(t) \end{cases}(\a…

Python实现打砖块游戏

提供学习或者毕业设计使用&#xff0c;功能基本都有&#xff0c;不能和市场上正式游戏相提比论&#xff0c;请理性对待&#xff01; 在本文中&#xff0c;我们将使用 Pygame 和 Tkinter 创建一个简单的打砖块游戏。游戏的目标是通过控制挡板来击碎屏幕上的砖块&#xff0c;同时…

PTQ4SAM、Mamba-Attention、AniTalker、IceFormer、U-DiTs、CogDPM

本文首发于公众号&#xff1a;机器感知 PTQ4SAM、Mamba-Attention、AniTalker、IceFormer、U-DiTs、CogDPM PTQ4SAM: Post-Training Quantization for Segment Anything Segment Anything Model (SAM) has achieved impressive performance in many computer vision tasks. Ho…

华为机考入门python3--(23)牛客23- 删除字符串中出现次数最少的字符

分类&#xff1a;字符串 知识点&#xff1a; 访问字典中keychar的值&#xff0c;不存在则返回0 my_dict.get(char, 0) 字典的所有值 my_dict.value() 列表中的最小值 min(my_list) 题目来自【牛客】 import sysdef delete_min_freq_char(s):# 计算字母出现的频次…

套管外径测量仪 多尺寸型号 规格全可定制

套管&#xff08;bushing&#xff09;是一种将带电导体引入电气设备或穿过墙壁的一种绝缘装置。前者称为电器套管&#xff0c;后者称为穿墙套管。套管通常用在建筑地下室&#xff0c;是用来保护管道或者方便管道安装的铁圈。套管的分类有刚性套管、柔性防水套管、钢管套管及铁皮…

鸿蒙OpenHarmony实战开发-MiniCanvas

介绍 基于OpenHarmony的Cavas组件封装了一版极简操作的MiniCanvas&#xff0c;屏蔽了原有Canvas内部复杂的调用流程&#xff0c;支持一个API就可以实现相应的绘制能力&#xff0c;该库还在继续完善中&#xff0c;也欢迎PR。 使用说明 1.添加MiniCanvas依赖 在项目entry目录…

07 - 步骤 javaScript代码

简介 JavaScript 代码是通过 JavaScript 脚本步骤来执行 JavaScript 脚本的一种方式。这允许用户在 Kettle 的数据流程中使用 JavaScript 编写自定义的脚本逻辑&#xff0c;用于数据处理、转换、计算等操作。 使用 场景 我需要在数据流加一个字段 createTime 当前时间&…

【嵌入式DIY实例】-基于GSM的远程灌溉系统

基于GSM的远程灌溉系统 文章目录 基于GSM的远程灌溉系统1、硬件准备与接线2、软件准备3、代码实现本文将详细介绍如何搭建通过使用手机实现对灌溉系统的远程控制。该系统利用全球移动通信系统(GSM)技术在灌溉系统和移动电话之间建立通信。该系统建立在流行的开源微控制器平台…

Linux 进程间通信之共享内存

&#x1f493;博主CSDN主页:麻辣韭菜&#x1f493;   ⏩专栏分类&#xff1a;Linux知识分享⏪   &#x1f69a;代码仓库:Linux代码练习&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多Linux知识   &#x1f51d; ​ 目录 ​编辑​ 前言 共享内存直接原理…

使用双指针解决问题题集(二)

1. 有效三角形的个数 给定一个包含非负整数的数组 nums &#xff0c;返回其中可以组成三角形三条边的三元组个数。 示例 1: 输入: nums [2,2,3,4] 输出: 3 解释:有效的组合是: 2,3,4 (使用第一个 2) 2,3,4 (使用第二个 2) 2,2,3 示例 2: 输入: nums [4,2,3,4] 输出: 4 题解&a…

zabbix监控方式(zabbix-trapper)

中文&#xff1a;zabbix采集器&#xff0c;即zabbix sender 。 Zabbix-Trapper 监控方式可以一次批量发送数据给Zabbix Server&#xff0c;与主动模式不同&#xff0c;Zabbix-Trapper 可以让用户控制数据的发送&#xff0c;而不用Zabbix-Agent进程控制&#xff0c;这意味着可以…
最新文章