spring-boot-starter-validation校验框架

介绍

Spring Boot Starter Validation是一个Spring Boot模块,用于简化应用程序中的验证功能。它包含以下依赖:

  • Hibernate Validator:Hibernate Validator是JavaBean Validation(JSR 380)规范的参考实现,提供了一组用于验证Java对象的约束和注解。
  • javax.validation API:javax.validation API是JavaBean Validation的API,定义了可用于验证的约束和注解集。
  • Spring Validation:Spring Validation是一个模块,用于将JavaBean Validation与Spring Framework集成,包括对方法参数和返回值的验证支持。

注解全解

使用Spring Boot Starter Validation,您可以轻松地将验证功能添加到应用程序中。以下是一些常见的验证注解:

  • @Null:被注释的元素必须为null。
  • @NotNull:被注释的元素必须不为null。
  • @AssertTrue:被注释的元素必须为true。
  • @AssertFalse:被注释的元素必须为false。
  • @Min(value):被注释的元素必须是一个数字,其值必须大于或等于指定的最小值。
  • @Max(value):被注释的元素必须是一个数字,其值必须小于或等于指定的最大值。
  • @Size(min, max):被注释的元素必须是一个字符串、集合、数组或映射,其大小必须在指定的最小和最大值之间。
  • @Pattern(regexp):被注释的元素必须是一个字符串,并且必须与指定的正则表达式匹配。
  • @Valid:被注释的元素必须是一个有效的对象,其所有约束都必须通过验证。

以下是一个使用Spring Boot Starter Validation的示例:

首先,在Spring Boot应用程序中添加以下依赖:

xml 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

接下来,创建一个包含验证注解的JavaBean:

java 复制代码
public class Person {
    @NotNull
    @Size(min = 2, max = 50)
    private String name;

    @Min(18)
    @Max(100)
    private int age;

    // getters and setters
}

然后,在控制器中使用@Valid注解来验证JavaBean:

java 复制代码
@RestController
public class PersonController {
    @PostMapping("/persons")
    public ResponseEntity createPerson(@Valid @RequestBody Person person) {
        // Do something with the person object
        return ResponseEntity.ok().build();
    }
}

最后,当调用createPerson方法时,Spring Boot将自动验证Person对象,如果验证失败,将返回一个400错误响应。

@Valid和@Pattern(regexp)是Spring Boot Starter Validation中两个常见的验证注解,用于验证Java对象和字符串。

@Valid


@Valid是一个用于在控制器方法参数上启用验证的注解。当在控制器方法参数上使用@Valid注解时,Spring Boot将自动验证该参数的所有约束,如果验证失败,则返回一个400错误响应。

例如,在下面的示例中,Person对象包含@NotNull和@Size注解,用于验证name属性。在PersonController中,使用@Valid注解来验证Person对象:

java 复制代码
public class Person {
    @NotNull
    @Size(min = 2, max = 50)
    private String name;

    // getters and setters
}

@RestController
public class PersonController {
    @PostMapping("/persons")
    public ResponseEntity createPerson(@Valid @RequestBody Person person) {
        // Do something with the person object
        return ResponseEntity.ok().build();
    }
}

当调用createPerson方法时,Spring Boot将自动验证Person对象的name属性,如果name为null或长度不在2到50之间,则返回一个400错误响应。

@Pattern(regexp)


@Pattern(regexp)是一个用于验证字符串是否匹配指定正则表达式的注解。在使用@Pattern(regexp)注解时,需要提供一个regexp属性,用于指定正则表达式。

例如,在下面的示例中,使用@Pattern(regexp)注解来验证email属性是否符合电子邮件地址的格式:

java 复制代码
public class Person {
    @Pattern(regexp = "^[\\w!#$%&'*+/=?`{|}~^-]+(?:\\.[\\w!#$%&'*+/=?`{|}~^-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$")
    private String email;

    // getters and setters
}

当验证Person对象时,Spring Boot将自动验证email属性是否符合指定的正则表达式。如果不符合,则返回一个400错误响应。

需要注意的是,在使用@Pattern(regexp)注解时,正则表达式可能会很复杂,因此需要仔细测试和验证。同时,也需要注意正则表达式的性能问题,避免使用过于复杂的正则表达式导致验证性能下降。

总之,@Valid和@Pattern(regexp)是Spring Boot Starter Validation中两个常见的验证注解,用于验证Java对象和字符串。它们可以帮助我们简化应用程序中的验证功能,提高代码的可读性和可维护性。

相关推荐
万少8 分钟前
Vibe Coding不停歇,移动端 TRAE SOLO 让你用手机也能编程啦
前端·javascript·后端
bzmK1DTbd15 分钟前
Git版本控制:Java项目中的分支管理与合并策略
java·开发语言·git
Rust研习社24 分钟前
为什么 Rust 没有空指针?
开发语言·后端·rust
皮皮林55130 分钟前
全网最全的 Jenkins + Maven + Git 自动化部署指南!
后端
舒一笑39 分钟前
用几十行代码搞定 Chat 接口透明转发:跨环境轻量级网关实战
后端·程序员·架构
S1998_1997111609•X2 小时前
论当今社会主义与人文关怀人格思想下的恶意仿生注入污染蜜罐描述进行函数值非法侵入爬虫的咼忄乂癿〇仺⺋.
数据库·网络协议·百度·ssh·开闭原则
铁皮饭盒2 小时前
成为AI全栈 - 第3课:路由 RESTful Elysia 状态码 设计规范
前端·后端·全栈
我叫黑大帅2 小时前
如何通过 Python 实现招聘平台自动投递
后端·python·面试
狼爷2 小时前
短视频播放量(Views)计数系统实现方案:高并发、不丢数的工业级实践
后端·架构
JWASX2 小时前
【RocketMQ 生产者和消费者】- 事务源码分析(1)
java·rocketmq·java-rocketmq