Java数据校验详解

本文详细介绍了Java数据校验的各个方面,从元编程开始,探讨了标准数据校验、自定义校验规则,包括组合注解校验和自定义校验器的实现,以及分组校验和校验错误级别的应用。通过示例代码展示了如何在JavaBean中使用注解进行数据校验,帮助开发者理解并掌握更高效的数据校验方法。
摘要由CSDN通过智能技术生成

一切从元编程开始

一个健壮的系统都要对外部提交的数据进行完整性、合法性的校验。即使开发一个不面对最终用户的工具包,也需要对传入的数据进行缜密的校验来防止引发底层难以追踪的问题。各路大神当然也会注意到这个问题,所以在“元编程”(见JSR250与资源控制)提出之后相续提交了JSR-303、JSR-349以及JSR-380来完善使用注解进行数据校验的机制,这三个JSR也被称为Bean Validation 1.0、Bean Validation 1.1和Bean Validation 2.0,后文统称为Bean Validation。

先看一个不使用Bean Validation校验数据的代码:

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;
	}
}

相信很多码友多少都写过类似的代码。使用IF—ELSE是否优雅这种高端问题暂且不谈,但是大量的IF—ELSE会导致业务内容越来越多的嵌套在代码中。针对这些问题Bean Validation为数据校验提供了更加规范化、通用化、复用程度更高的校验方法。

数据校验的原理并不复杂,主要是用注解(Annotation)在域或setter方法上声明JavaBean中数据的准则。Java的数据校验代码主要在javax.validation包中,包括注解、校验器以及校验器工厂,接下来通过例子说明。(例子可执行代码在本人的gitee库,本文代码在chkui.springcore.example.javabase.validation包)

标准数据校验

JSR提交的Javax.validation定义中已经为数据校验定义了很多方法和注解,但是需要清晰的是JSR仅仅制定了一个规范,具体的功能是由各种框架实现的。本文的例子引入了Hibernate Validator 6.0.12.Final包,他与Spring Validator一样,都是根据JSR规范实现校验功能。

数据校验是围绕一个实体类展开的,下面的代码声明了一个实体类,通过注解标注每个域上的赋值规则:

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值