SpringBoot(五):JSR303校验

一、什么是JSR303校验

JSR,是Java Specification Requests的缩写,意思是Java规范提案,是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。

JCP(Java Community Process)是一个开放的国际组织,主要由Java开发者以及被授权者组成,职能是发展和更新。

也就是说JSR303其实就是一种Java规范,它叫做Bean Validation,意思就是对Bean进行验证。

二、JSR303的校验类型

内置注解:
@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) 被注释的元素必须符合指定的正则表达式
Hibernate扩展注解:
@Email 被注释的元素必须是电子邮箱地址
@Length 被注释的字符串的大小必须在指定的范围内
@NotEmpty 被注释的字符串的必须非空
@Range 被注释的元素必须在合适的范围内

三、SpringBoot中JSR303校验的简单使用

1.依赖导入

     <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>

2.注解使用

Bean中使用@Validated注解,在对应的属性上使用JSR303中的注解,示例如下:

package com.jms.config;

import com.sun.istack.internal.NotNull;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;

import javax.validation.constraints.Email;
import javax.validation.constraints.Min;

@Validated
@Component
@ConfigurationProperties(prefix = "jsr303")
public class TestJSR303 {

    @NotNull
    private String name;
    @Min(0)
    private int age;

    @Email
    private String email;

    public TestJSR303() {
    }

    public TestJSR303(String name, int age, String email) {
        this.name = name;
        this.age = age;
        this.email = email;
    }

    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 String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString() {
        return "TestJSR303{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", email='" + email + '\'' +
                '}';
    }
}

yaml文件内容:

jsr303:
  name: jsr
  age: -1
  email: aaa

3.测试:

package com.jms;

import com.jms.config.TestJSR303;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class Springboot02ConfigApplicationTests {
    private TestJSR303 testConfig;
    @Autowired
    public void setTestConfig(TestJSR303 testConfig) {
        this.testConfig = testConfig;
    }
    @Test
    void contextLoads() {
        System.out.println(testConfig);
    }

}

测试结果如下:

 

posted @ 2022-12-14 12:11  谁知道水烫不烫  阅读(235)  评论(0编辑  收藏  举报