springboot使用hibernate validator校验方式

下面是关于“Spring Boot使用Hibernate Validator校验方式”的完整攻略,包括使用示例:

1. 什么是Hibernate Validator

Hibernate Validator是实现Java Bean Validation规范的一个开源的验证框架。它减少了一些重复的校验代码的编写,并提供了一个标准化的验证方式,可以在不同的Bean Validation API中使用。

2. Spring Boot中使用Hibernate Validator

2.1 添加依赖

Spring Boot默认已经集成了Hibernate Validator,只需要在pom.xml中添加如下依赖即可:

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

2.2 添加校验注解

在Java Bean字段上添加Hibernate Validator的注解,来指定具体的校验规则。例如:

public class User {

    @NotBlank(message = "用户名不能为空")
    private String name;

    @Min(value = 18, message = "年龄必须大于等于18岁")
    private Integer age;
}

2.3 开启校验

可以在Spring Boot应用程序的入口处(通常是Application类)添加@Validated注解,来开启校验功能。例如:

@RestController
@Validated
public class UserController {

    @PostMapping("/user")
    public User createUser(@RequestBody @Valid User user) {
        return user;
    }
}

在上述例子中,@Validated注解标注了RestController,那么所有在该类中使用@Valid注解的地方都将进行校验。

2.4 自定义错误返回

在控制类中可以使用@ExceptionHandler注解来处理抛出的验证错误异常BindException,如下所示:

@RestControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(BindException.class)
    public Map<String, String> handlerBindException(BindException e) {
        Map<String, String> errorMap = new HashMap<>();
        List<FieldError> fieldErrors = e.getBindingResult().getFieldErrors();
        for (FieldError error : fieldErrors) {
            errorMap.put(error.getField(), error.getDefaultMessage());
        }
        return errorMap;
    }
}

2.5 示例1

代码如下:

@RestController
@Validated
public class UserController {

    @PostMapping("/user")
    public User createUser(@RequestBody @Valid User user) {
        return user;
    }

    @GetMapping("/user/{id}")
    public User findUserById(@PathVariable @Min(1) Integer id) {
        User user = new User();
        user.setId(id);
        user.setName("Tom");
        user.setAge(20);
        return user;
    }
}

在上述代码中,UserController中创建用户与查询用户的方法都对输入参数进行了校验。

2.6 示例2

使用自定义错误返回对上述示例进行改造:

@RestControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(BindException.class)
    public Map<String, String> handlerBindException(BindException e) {
        Map<String, String> errorMap = new HashMap<>();
        List<FieldError> fieldErrors = e.getBindingResult().getFieldErrors();
        for (FieldError error : fieldErrors) {
            errorMap.put(error.getField(), error.getDefaultMessage());
        }
        return errorMap;
    }
}

@RestController
@Validated
public class UserController {

    @PostMapping("/user")
    public User createUser(@RequestBody @Valid User user) {
        return user;
    }

    @GetMapping("/user/{id}")
    public User findUserById(@PathVariable @Min(1) Integer id) {
        User user = new User();
        user.setId(id);
        user.setName("Tom");
        user.setAge(20);
        return user;
    }
}

在上述改造中,当校验失败时,全局异常处理类将返回一个Map类型的错误信息。

至此,Spring Boot使用Hibernate Validator校验的完整攻略介绍完毕。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot使用hibernate validator校验方式 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • 一篇文章让你三分钟学会Java枚举

    学习Java枚举的完整攻略 什么是枚举? 枚举(Enum)是Java中的一种数据类型,它可以将一组有限个数的字符常量定义为可枚举的列表。 比如可以定义一个颜色的枚举类型: enum Color { RED, YELLOW, BLUE, GREEN } 枚举的特点 枚举中的每个枚举值都是一个常量,用大写字母表示 枚举类型通过Enum类实现,每个枚举值都是该类型…

    Java 2023年5月26日
    00
  • Java API学习教程之正则表达式详解

    Java API学习教程之正则表达式详解 正则表达式简介 正则表达式是对字符串进行模式匹配的一种语法。通过正则表达式,可以快速的进行字符串匹配,替换操作等。Java通过\java.util.regex.*\包来支持正则表达式。 常用的正则表达式元字符 . – 匹配除换行符以外的任意字符 ^ – 匹配行的开始位置 $ – 匹配行的结束位置 匹配前面的元素零次或…

    Java 2023年5月26日
    00
  • Spring Batch 入门示例

    下面详细讲解Spring Batch入门示例的完整攻略,内容包括: Spring Batch 简介 Spring Batch 入门示例概述 示例1:批处理读取 CSV 文件并输出到控制台 示例2:批处理读取数据库中的数据并写入到 XML 文件中 Spring Batch 简介 Spring Batch 是一个高效、强大、可重用的批处理框架,能够处理海量的数据…

    Java 2023年6月3日
    00
  • Java关于MyBatis缓存详解

    Java关于MyBatis缓存详解 MyBatis是一种Java持久层框架,它提供了一个简单的方法来处理数据源之间的交互,并具有许多内置功能,包括缓存。这篇文章将深入探讨MyBatis缓存,讲解如何使用缓存来提高应用程序的性能。 MyBatis缓存概述 MyBatis缓存可以分为一级缓存和二级缓存。 一级缓存 MyBatis的默认缓存是一级缓存,它是SqlS…

    Java 2023年6月1日
    00
  • JAVA中string数据类型转换详解

    JAVA中string数据类型转换详解 在Java中,我们经常需要对数据类型进行转换以满足特定的需求。其中,String类型的转换是非常常见的操作。 String类型转换为基本数据类型 在Java中,String类型可以通过方法调用将其转换为基本数据类型。以下是一些常见的String到基本数据类型转换方法: 1. parseInt()方法 该方法将Strin…

    Java 2023年5月27日
    00
  • Java中的可变参数常见用法实例总结

    Java中的可变参数常见用法实例总结 什么是可变参数 Java中的可变参数是在方法参数列表中加上省略号(…)来实现的,可变参数可以接收任意数量的参数,而不需要在方法定义时指定参数个数。 基本语法如下: public static void method(Object… args) { // … } 常见用法 1. 打印日志 在写Java代码时,我…

    Java 2023年5月26日
    00
  • Springboot集成kafka高级应用实战分享

    为了让大家更好地理解 Springboot 集成 kafka 的应用,我将分别从以下几个部分展开: 环境准备 Springboot 集成 kafka 配置 生产者示例 消费者示例 1. 环境准备 首先需要确保已经正确安装了 Kafka,JDK和 Maven。然后在 pom.xml 文件中引入 Kafka client 相关依赖: <dependenci…

    Java 2023年5月20日
    00
  • 在IDEA中安装MyBatis Log Plugin插件,执行mybatis的sql语句(推荐)

    接下来我将详细讲解在IDEA中安装MyBatis Log Plugin插件的过程及使用方法。 步骤一:安装MyBatis Log Plugin插件 打开IDEA,从菜单栏选择“File” > “Settings”(或者使用快捷键“Ctrl + Alt + S”)。 在弹出的窗口中选择“Plugins”,然后点击“Browse repositories”…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部