从Spring-Boot开始深入理解Spring系列(五)——Spring-Boot集成JavaEE的JSR380的BV2.0规范

本文介绍了JSR和Bean Validation(BV)的概念,阐述了为何需要BV以及其带来的好处,如简化代码、提高复用性和统一异常处理。讲解了BV在基础和高级应用场景中的运用,并展示了在Spring Boot中如何结合Hibernate Validation进行数据校验。提供了源码下载和相关官方文档链接,帮助读者深入实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基础概念

什么是JSR

Java Specification Requests的缩写,意思是Java 规范提案。 是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。 任何人都可以提交JSR,以向Java平台增添新的API和服务。

什么是BV

是一个java规范(准确来说,属于JavaEE范围内的规范)。

  • 允许您通过注释表达对象模型的约束
  • 允许您以可扩展的方式编写自定义约束
  • 提供API来验证对象和嵌套的(继承的)对象
  • 提供API以验证参数并返回方法和构造函数的值
  • 报告违规行为(本地化,个性化定制)
  • 在Java SE上运行,但集成在Java EE 6及更高版本中; Bean Validation 2.0是Java EE 8的一部分

BV的实现有哪些?

主流实现框架,有Hibernate validation、Spring validation等。而Spring 的validation 核心模块,首先是完整实现BV规范,JSR380。其次,在spring-mvc中实现了自动化的校验。并且基于hibernate validation进行了增强(并兼容hibernate validation的实现)

为什么需要BV?

不用的现状(必要性)

在java的世界中,没有BV之前的校验,依靠一些第三方的工具包提供的基础简单的校验,或者自行编码验证。工具包主要有Apache的common工具包中的validationUtils、Spring的validationUtils。
例一:

public class StandardValidation {

	public static void main(String[] args) {
		System.out.println(validationWithoutAnnotation(" ", -1));
	}

	public static String validationWithoutAnnotation(String inputString, Integer inputInt) {
		String error = null;
		if (null == inputString) {
			error = "inputString不能为null";
		} else if (null == inputInt) {
			error = "inputInt不能为null";
		} else if (1 > inputInt.compareTo(0)) {
			error = "inputInt必须大于0";
		} else if (inputString.isEmpty() || inputString.trim().isEmpty()) {
			error = "inputString不能为空字符串";
		} else {
			// DO
		}
		return error;
	}
}

例二:
Spring的自行开发的数据校验功能由3个部分组成:
校验器——Validator,他会运行校验代码。
校验对象,实际上就是一个JavaBean,Validator会对其进行校验。
校验结果——Errors,一次校验的结果都存放在Errors实例中。
这是Spring在Bean Validation规范制定之前就实现的数据校验功能,ValidationUtils的注释中@since标签是2003年5月6号,而JSR-303定稿时间已经是6年之后(2009年)的事了。

package chkui.springcore.example.hybrid.springvalidation.entity;
//车辆信息
public class Vehicle {
	private String name;
	private String type;
	private String engine;
	private String manufacturer;
	private Calendar produ
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值