JSR 303 - Bean Validation

@Validated工作原理 与 Spring Validator 与 JSR-303 Bean Validation @javax.validation.Valid 之间的关系 在Java校验中,为了简化开发JavaEE 6 中有一项子规范JSR303,叫做Bean Validator,而 Hibernate Validator 是 Bean Validation 的参考实现 . Hibernate Validator 提供了 JSR 303 规范中所有内置 constraint 的实现,除此之外还有一些附加的 constraint。 Spring提供了@Valid 和 @Validated两个注解来实现验证功能,在官方文档中,将Validation分成了以下几个模块。 or 阅读详情

关于 Bean Validation

在任何时候,当你要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情。应用程序必须通过某种手段来确保输入进来的数据从语义上来讲是正确的。在通常的情况下,应用程序是分层的,不同的层由不同的开发人员来完成。很多时候同样的数据验证逻辑会出现在不同的层,这样就会导致代码冗余和一些管理的问题,比如说语义的一致性等。为了避免这样的情况发生,最好是将验证逻辑与相应的域模型进行绑定。

Bean Validation 为 JavaBean 验证定义了相应的元数据模型和 API。缺省的元数据是 Java Annotations,通过使用 XML 可以对原有的元数据信息进行覆盖和扩展。在应用程序中,通过使用 Bean Validation 或是你自己定义的 constraint,例如 @NotNull, @Max, @ZipCode, 就可以确保数据模型(JavaBean)的正确性。constraint 可以附加到字段,getter 方法,类或者接口上面。对于一些特定的需求,用户可以很容易的开发定制化的 constraint。Bean Validation 是一个运行时的数据验证框架,在验证之后验证的错误信息会被马上返回。

下载 JSR 303 – Bean Validation 规范 http://jcp.org/en/jsr/detail?id=303

Hibernate Validator 是 Bean Validation 的参考实现 . Hibernate Validator 提供了 JSR 303 规范中所有内置 constraint 的实现,除此之外还有一些附加的 constraint。

Bean Validation 中内置的 constraint
Constraint 详细信息
@Null 被注释的元素必须为 null
@NotNull 被注释的元素必须不为 null
@AssertTrue 被注释的元素必须为 true
@AssertFalse 被注释的元素必须为 false
@Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max, min) 被注释的元素的大小必须在指定的范围内
@Digits (integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past 被注释的元素必须是一个过去的日期
@Future 被注释的元素必须是一个将来的日期
@Pattern(value) 被注释的元素必须符合指定的正则表达式

示例

package com.bval;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

public class TestBean {
    @NotNull
    @Size(min = 10, max = 10)
    private String orderId;
    @NotNull
    private String status;

    @Min(10)
    private String date;

    public String getOrderId() {
        return orderId;
    }

    public void setOrderId(String orderId) {
        this.orderId = orderId;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }
}


package com.bval;

import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import java.util.Set;

public class Main {
    public static void main(String[] args) {
        ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
        Validator validator = factory.getValidator();
        Set<ConstraintViolation<TestBean>> violations = validator.validate(getBean());
        for (ConstraintViolation<TestBean> violation : violations) {
            System.out.println(violation.getPropertyPath() + ":" + violation.getMessage());
        }
    }

    private static TestBean getBean() {
        TestBean bean = new TestBean();
        bean.setOrderId("a");
        bean.setDate("aaaa");
        return bean;
    }
}
输出:
date:must be greater than or equal to 10
status:may not be null
orderId:size must be between 10 and 10



结束语

JSR 303 的发布使得在数据自动绑定和验证变得简单,使开发人员在定义数据模型时不必考虑实现框架的限制。当然 Bean Validation 还只是提供了一些最基本的 constraint,在实际的开发过程中,用户可以根据自己的需要组合或开发出更加复杂的 constraint


基于Halium 9为小米平板4移植Ubuntu Touch:内核适配与驱动调试实战 在移动设备生态中,Linux内核作为核心,通过硬件抽象层(HAL)管理底层硬件驱动,为上层系统提供统一接口。其模块化设计允许深度定制,是实现跨平台移植的技术基础。Halium项目正是利用这一原理,构建了一个中间层,将安卓内核的硬件支持能力“翻译”成标准Linux发行版能识别的格式,从而在手机、平板等移动设备上运行Ubuntu Touch、postmarketOS等移动Linux系统,极大地拓展了老旧设备的再利用价值。这一技术为开发者提供了在常见安卓硬件上进行Linux系统开发与定制的可能,尤其在嵌入式与物联 阅读详情

相关推荐

2025最新正版Autodesk 3ds Max 2022安装教程:从下载到中文环境配置全流程解析

Autodesk 3ds Max 2022是一款专业的三维建模、动画和渲染软件,广泛应用于影视制作、游戏开发、建筑可视化等领域。

waicsdn_haha的博客 1万+

在 Spring Boot 使用Bean Validation 完全指南

1 前言 Bean Validation是 Java 生态圏中实现Bean校验规范的事实上的标准。 它与 Spring 和 Spring Boot 能很好地集成在一起。 但是,也存在一些问题。 本教程详细介绍了所有主要的校验用例和每个用例的代码示例。 代码示例 他的文章附有 GitHub 上的工作代码示例。 2 使用 Spring Boot Validation Starter Spring Boot 的 Bean Validation 支持起步依赖starter,我们可以将其包含到我们的项目中(在Gr

小伍的程序之路 3943

2.4G/4G天线共存方案:Air8101多频段隔离设计实战(附波长计算表)

本文深入探讨了物联网设备中Wi-Fi 2.4GHz与4G LTE天线共存设计的实战方案。针对B40与2.4G频段紧邻带来的干扰挑战,文章系统性地提出了空间隔离、PCB布局优化、结构设计三重防线,并提供了关键的波长计算工具与系统级验证Checklist,旨在帮助工程师将多频段隔离设计从“玄学”变为可执行的工程规范。

weixin_29197051的博客 389

在Spring MVC应用程序中使用Bean Validation 1.1获得更好的错误消息

在许多新功能中, Bean Validation 1.1引入了使用统一表达式语言(EL)表达式的错误消息插值。 这允许基于条件逻辑来定义错误消息,还可以启用高级格式化选项 。 添加到Spring MVC应用程序后,您可以非常简单地显示更友好的错误消息。 在本文的第一部分中,我将简要描述使用EL表达式的消息插值,在第二部分中,我们将使用Spring Boot和Thymeleaf构建一个运行...

最佳 Java 编程 207

SSE消息推送避坑指南:从Chrome兼容性到Spring超时配置

本文深入探讨了在Java Spring Boot项目中实现SSE消息推送时,从浏览器兼容性到后端配置的完整避坑指南。针对Chrome并发连接限制、Safari自动断开、Nginx代理缓冲以及Spring SseEmitter内存泄漏与超时管理等生产环境常见问题,提供了具体的解决方案和最佳实践配置,帮助开发者构建稳定可靠的实时推送系统。

work3的博客 449

数据包络分析(超效率-SBM模型)附python代码

超效率-SBM模型超效率SBMpython代码(部分) 这段时间差不多忙完了,终于有时间可以来经营我的博客了。 上阵子挺多人私信我,原谅我记性不好,可能没有回复全。 这篇文章是超效率的扩展。 超效率SBM SBM本身就是非径向模型(non-radial model),想要了解径向超效率的请自行去前面翻阅。 上篇文章说到super-SBM的一个模型,公式为: 这个模型是分式模型,我们可以通过charnes cooper变换,将其转变成为: python代码(部分) 在编程过程中,本来我以为第一个模型是无

weixin_43217288的博客 3万+

JSR 303 Bean Validation

JSR 303 Bean Validation JSR 303 – Bean Validation 规范 简介 在任何时候,当你要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情。 应用程序必须通过某种手段来确保输入进来的数据从语义上来讲是正确的。 在通常的情况下,应用程序是分层的,不同的层由不同的开发人员来完成。 很多时候同样的数据验证逻辑会出现在不同的层,这样就会导致代码冗余...

OMG的博客 335

110、3A 端到端调试:从 ISP register dump 到主观画质的完整调试流程

文章摘要 本文分享了ISP 3A(AE/AWB/AF)端到端调试的实战经验,通过具体案例解析常见问题排查方法。从硬件链路确认、寄存器dump分析、算法闭环验证到主观画质调优,提出了一套系统化调试流程。重点包括:如何通过示波器和寄存器抓包定位时序问题,AWB调试中black level校正的关键作用,AF闭环控制中hall传感器反馈的重要性,以及算法与硬件联调的"三板斧"方法论。作者强调3A调试本质是系统工程,需结合物理层信号测量、数据通路验证和算法状态跟踪,避免陷入局部优化陷阱。

sundong_81的博客 57

JSR 303 - Bean Validation 基本介绍及常用注解

JSR 303 是什么? JSR-303 是 Java EE 6 中的一项子规范,叫做 Bean Validation,官方参考实现是hibernate Validator。 JSR 303 能做什么? 1.JSR 303 用于对java Bean 中的字段的值进行验证,使得基本的验证逻辑可以从业务代码中脱离出来。 2.是一个运行时的数据验证框架,在验证之后验证的错误信息会被马上返回。 都有些什么...

唛唛丶Information Technology 3677

Xilinx FPGA平台GTX简易使用教程(四)GTX IP核配置教程

干货来了,GTX IP核配置,搬砖全靠它~~

数字IC/FPGA杂货铺,找一找,或许有你想要的~ 1万+

C#上位机实战:Modbus RTU串口通信(CRC校验+超时重发完整实现)

在工业自动化上位机开发中,Modbus RTU是串口通信的事实标准协议,SerialPort是 .NET 平台操作串口的原生类,无需依赖第三方库即可实现基础通信。实际项目中,工控现场存在电磁干扰、串口丢包、设备响应延迟等问题,CRC 数据校验用于保证报文完整性,超时重发机制用于提升通信稳定性。本文从零封装一套可直接落地的 Modbus RTU 通信组件,包含完整的校验算法、超时控制、重发逻辑,并配套 WinForm 演示界面。本文基于 C# 原生SerialPort类,实现了一套生产可用。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 387

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,可以在控制器中对表单提交的数据方便地验证。

徐刘根的博客 1万+

RHCA ---RH442-4

这题考试中是没有的,但我做ex的判分脚本里做了,主要是lab环境swap只有512M的,这样后续改了某几个参数后会造成内存不够用导致异常.这里记得是双>,如果没自信的小伙伴可以在考试开始后第一时间把/etc/fstab先备份一个或者vi进入后手动敲一下。根据题意我们需要分2个768M的分区给swap。用free看swap大小是2.0Gi即可。留意红框中的内容即可,最后w保存退出。这个时候可以重启下机器。

Q先生 641

JSR-303 Bean Validation

JSR-303 Bean Validation https://www.jianshu.com/p/554533f88370 https://baijiahao.baidu.com/s?id=1667085036607407293&wfr=spider&for=pc

ZOE-ZHU的博客 550

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

JSR303 Bean Validation 详解(权威版)

本文全面解析JSR303数据校验规范,涵盖其迭代历程、核心组件与常用注解,结合Spring Boot实战场景,讲解基础用法与分组校验、自定义注解等高级特性,总结其标准化、解耦的核心优势,并给出企业级落地建议,助力开发者高效实现数据校验、保障系统稳定。

2301_80567343的博客 977

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

JSR教程1——JSR 303 - Bean Validation介绍

1.Bean Validation 在任何时候,当你要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情。应用程序必须通过某种手段来确保输入进来的数据从语义上来讲是正确的。在通常的情况下,应用程序是分层的,不同的层由不同的开发人员来完成。很多时候同样的数据验证逻辑会出现在不同的层,这样就会导致代码冗余和一些管理的问题,比如说语义的一致性等。为了避免这样的情况发生,最好是将验...

aochou19810706的博客 248

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Bean Validation 从JSR 303到JSR 349到JSR 380

参数校验,是我们绕不过去的话题。Controller参数校验,Service层参数校验。 如何形成一套标准的,满足各场景的参数校验规范,是一件很重要的事,本篇文章,就来聊一聊参数校验相关规范与发展。 Java(也就是Jakarta,从18年以后,Java EE 正式改名为 Jakarta EE 了。)参数校验的官网地址:https://beanvalidation.org/ java中参数校验版本变化 如图是官网中的Bean Validation的版本历史,从JSR 303到JSR 349到JSR 3.

岸河世界 671

JSR 303 - Bean Validation备忘

1.添加支持包    org.hibernate    hibernate-validator    5.0.2.Final      2.编写验证类并验证 import java.util.Set; import javax.validation.ConstraintViolation; import javax.validation.Validation; import

xiaowusheng的专栏 572

JSR303 Bean Validation 详解

JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Validation,官方参考实现是Hibernate Validator。此实现与 Hibernate ORM 没有任何关系。JSR 303 用于对 Java Bean 中的字段的值进行验证。Spring MVC 3.x 之中也大力支持 JSR-303,可以在控制器中对表单提交的数据方便地验证 JSR 303 内置

chenshun123的博客 1739

JSR303-Bean Validation介绍与基于SpringBoot项目使用

JSR303-Bean Validation介绍与基于SpringBoot项目使用JSR303-Bean Validation介绍与基于SpringBoot项目使用1.关于Bean Validation2.Constraint介绍Bean Validation 中内置的 constraintHibernate Validator 附加的 constraint3.Springboot项目中应用4.自...

Java猿人一枚的博客 809

bean validation校验方法参数_Spring Boot 使用 JSR303 实现参数验证

简介JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Validation。在任何时候,当你要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情。应用程序必须通过某种手段来确保输入进来的数据从语义上来讲是正确的。在通常的情况下,应用程序是分层的,不同的层由不同的开发人员来完成。很多时候同样的数据验证逻辑会出现在不同的层,这样就会导致代码冗余和一些管理的问题,比如说...

weixin_39886929的博客 87

领域参数校验(JSR-303 Bean Validation)

文章目录领域参数校验(JSR-303 Bean Validation)JSR-303的目标默认提供的 校验参数使用jsr-303提供的参数校验属性使用一个注解属性使用多个注解自定义参数校验声明一个注解(简单示例:这里用来判断字符串是不是包含12)声明注解验证器Spring中验证领域的属性注解属性在控制器验证参数调用原生API原生源码分析Validation.buildDefaultValidato...

勿在浮沙筑高台 1437

java 后台pojo 使用 JSR-303 Bean Validation 实现校验

1.JSR-303 Bean Validation JSR 是Java Specification Requests 的缩写,是指向 JCP(Java Community Process) 提出新增一个标准化技术规范的正式请求。 任何人都可以提交 JSR,以向 Java 平台增添新的 API 和服务,已审核通过的规范涉及 Java 各个领域,有兴趣可以了解一下。 Bean Validatio...

qzqanzc的博客 668

JSR 303参数校验 Bean Validation

参数校验是我们程序开发中必不可少的过程。用户在前端页面上填写表单时,前端js程序会校验参数的合法性,当数据到了后端,为了防止恶意操作,保持程序的健壮性,后端同样需要对数据进行校验。后端参数校验最简单的做法是直接在业务方法里面进行判断,当判断成功之后再继续往下执行。但这样带给我们的是代码的耦合,冗余。当我们多个地方需要校验时,我们就需要在每一个地方调用校验程序,导致代码很冗余,且不美观。 那么如何...

JavaLab 1055

JSR303、JSR349 - Bean Validation介绍

文章目录一、关于 Bean Validation二、约束的定义三、约束的属性四、应用举例1、无分组的例子2、按分组校验3、按分组指定顺序校验4、指定PayLoad5、自定义ConstraintValidator6、其他可执行模块的检查五、spring对Validation的支持增强1、随意注入ValidatorFactory与Validator2、自定义ConstraintValidator允许注...

CrazyCoder 1965

JSR 303(即 Bean Validation)是一个通过​​注解在 Java Bean 上定义和执行验证规则​​的规范

​​步骤​​​定义注解​​:String message() default "值不在可选范围内";Class<?Class<?// 允许的值列表,如[0,1]​​实现校验器​​:@Override@Override​​使用自定义注解​​:@ListValue(vals = {0, 1}, message = "状态只能是0或1")JSR 303通过​​声明式注解​​简化数据校验。

码银的博客 1306
上一篇: JAX-WS(JWS):Java WebService
下一篇: Java 覆盖系统类:endorsed 技术
conquer0715
博客等级 码龄18年 73粉丝 147原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值