JSR 380 Java Bean 验证标准草案介绍

本文介绍了JSR 380(Java Bean验证标准),包括验证Java Bean、方法参数、集合内容、多字段联合验证及自定义验证。示例展示了如何使用Hibernate Validator实现验证,并探讨了与Spring框架的结合,简化Web应用的表单验证。
摘要由CSDN通过智能技术生成

前言

使用 Java 编写接口时,我们经常需要验证参数的合法性,但是在标准出现之前,我们有各种各样的方法用来验证,比如编写断言工具类等。后来 Java 发展出了一套非常方便的验证框架,最开始作为 JSR 303 规范,后来进行了拓展,叫做 JSR 380,其说明可在 https://jcp.org/en/jsr/detail?id=380 查看。虽然叫做提案,但是已经非常完善了。

下载安装

要使用 Java Bean Validation API,需要选择一个具体的实现模块,目前用的最多的是 Hibernate 提供的实现,需要在类路径中包含如下 jar:

  • jakarta.validation-api.jar
  • hibernate-validator.jar
  • jakarta.el-api.jar(只在没有 Web 环境的情况下需要)

如果使用 Manven,可以使用如下配置代码:

<dependency>
	<groupId>jakarta.validation</groupId>
	<artifactId>jakarta.validation-api</artifactId>
	<version>3.0.0</version>
</dependency>
<dependency>
	<groupId>org.hibernate.validator</groupId>
	<artifactId>hibernate-validator</artifactId>
	<version>7.0.1.Final</version>
</dependency>
<dependency>
	<groupId>org.glassfish</groupId>
	<artifactId>jakarta.el</artifactId>
	<version>4.0.2</version>
</dependency>

功能

验证 Java Bean

既然叫做 Bean Validation,最主要的功能当然是校验 Java Bean 了,事实上第一版的规范确实只有校验 Java Bean 的功能,下面的功能都是后来加的。

先来看看我这个 Java Bean:

package org.example;

import java.time.LocalDate;

public class User {
   
    private String name;

    private int age;

    private LocalDate birthDay;

    public String getName() {
   
        return name;
    }

    public void setName(String name) {
   
        this.name = name;
    }

    public int getAge() {
   
        return age;
    }

    public void setAge(int age) {
   
        this.age = age;
    }

    public LocalDate getBirthDay() {
   
        return birthDay;
    }

    public void setBirthDay(LocalDate birthDay) {
   
        this.birthDay = birthDay;
    }
}

就是一个普普通通的类,现在假设一个场景,要求这个对象的所有属性不能为空,名字必须在 2 到 4 个字之间,年龄必须在 18 到 35 之间,生日必须是过去的日期并且生日年份加上年龄必须是今年年份(不考虑现实逻辑)。

这个很好实现,不用框架也能实现,但是用判断语句写非常麻烦,而且写完之后如果不看代

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值