详解spring注解式参数校验

那我来为你详细讲解“详解Spring注解式参数校验”的完整攻略。

什么是参数校验

参数校验是指对于一个方法或者函数,在调用的时候需要对输入参数进行一定的验证和校验,以确保其满足调用方的需求,防止参数错误导致的问题。

在Spring框架中,参数校验可以通过注解来完成,这个功能是由Hibernate提供的,它将JSR 303规范映射到Java中,并提供了一些注解,如@NotNull、@NotEmpty、@Size等。

Spring参数校验的使用

Spring参数校验的使用非常简单。首先需要在方法的参数上标记相应的注解。例如,在以下的UserController中,我们使用了@Valid注解来校验UserModel中的参数:

@RestController
@RequestMapping("/api/v1/users")
public class UserController {

    @PostMapping
    public UserModel createUser(@RequestBody @Valid UserModel userModel) {
        // ...
    }
}

在上面的代码中,@Valid注解告诉Spring框架在调用userModel参数之前执行参数校验。

常用注解介绍

1. @NotNull & @NotEmpty & @NotBlank

  • @NotNull:检查对象是否为空,无法检查字符串是否为空
  • @NotEmpty:检查字符串、集合、Map、数组是否为空,不能接受null
  • @NotBlank:只检查字符串不是null和不能为空字符串
public class UserModel {
    @NotNull(message = "用户名不能为空")
    private String username;

    @NotEmpty(message = "密码不能为空")
    private String password;

    @NotBlank(message = "昵称不能为空")
    private String nickname;

    // ...
}

2. @Size

  • @Size:检查字符长度,对于集合、Map、数组则检查元素个数
public class UserModel {
    @Size(min = 6, max = 18, message = "用户名长度必须在6~18个字符之间")
    private String username;

    // ...
}

3. @Range

  • @Range:检查数字是否在指定范围内
public class UserModel {
    @Range(min = 1, max = 150, message = "年龄必须在1~150之间")
    private Integer age;

    // ...
}

具体实例

我们来看一个具体的例子,在下面的实例中我们定义一个请求参数名为“age”的整形参数,并使用@Range注释验证它是否在1 ~ 150范围内,如果验证失败,则返回一个带有400 Http状态代码和“年龄必须在1-150之间”的错误响应。

@RestController
@RequestMapping("/api")
public class SampleController {

    @GetMapping("/range")
    public ResponseEntity<String> checkAgeRange(@RequestParam @Range(min = 1, max = 150, message = "年龄必须在1~150之间") Integer age) {
        return ResponseEntity.ok("年龄为" + age);
    }
}

我们使用postman进行测试,输入url并设置age参数,如果age不在1 ~ 150范围内,将返回以下错误:

{
    "timestamp": "2019-01-01T00:00:00.000+00:00",
    "status": 400,
    "error": "Bad Request",
    "message": "年龄必须在1~150之间",
    "path": "/api/range"
}

我们再看一个实例,在下面的代码中我们定义一个名为User的Java Bean,使用@NotNull注解验证email属性是否非空,使用@Range注解验证age属性是否在1~150范围内。

public class User {
    @NotNull(message = "email不能为空")
    private String email;

    @Range(min = 1, max = 150, message = "年龄必须在1~150之间")
    private Integer age;

    // ...
}

使用UserModel作为控制器参数,比如:

@RestController
@RequestMapping("/api")
public class UserController {

    @PostMapping("/user")
    public ResponseEntity<String> createUser(@RequestBody @Valid User user) {
        return ResponseEntity.ok("创建用户成功");
    }

}

如果请求体缺少email或者age不在1~150范围内,则会返回400响应。

综上所述,我们详细讲解了Spring注解式参数校验的完整攻略,包括注解的介绍和使用,以及具体实例的演示。希望这篇攻略对您有帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解spring注解式参数校验 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • 详解css加载会造成阻塞吗

    CSS加载可能会阻塞页面的渲染,尤其是在页面有大量CSS文件或者CSS文件大小较大的情况下。这是因为在浏览器下载页面的过程中,遇到CSS文件的时候,浏览器需要先下载并解析该CSS文件,再根据CSS文件修改HTML DOM树和CSSOM树。只有在CSS文件下载和解析完成后,浏览器才会继续下载并解析HTML文件及其他嵌入式文件,最后将页面渲染出来。因此,CSS文…

    other 2023年6月25日
    00
  • 魔兽世界wlk怀旧服神牧堆什么属性 神牧属性优先级选择攻略

    魔兽世界WLK怀旧服神牧堆什么属性攻略 简介 神牧作为魔兽世界中的治疗职业之一,在团队中扮演着重要的角色。对于神牧的属性选择,不同的站位和不同的副本有不同的需求,因此我们需要根据具体情况选择不同的属性进行堆叠。 属性优先级 武器 神牧的武器一般选择单手法杖或者单手匕首,需要注意的是武器需要获取到高速武器,以便更快的施法。 1. 法力值 (MP5) 神牧每秒消…

    other 2023年6月27日
    00
  • 在centos7下安装composer

    在CentOS 7下安装Composer的完整攻略如下: 安装PHP和相关扩展 Composer是基于PHP开发的,因此需要先安装PHP和相关扩展。可以使用以下命令安装: sudo yum install php php-cli-common php-mbstring php-g php-intl php-mysqlnd php-xml php-zip 下载…

    other 2023年5月7日
    00
  • C++深入探究重载重写覆盖的区别

    C++深入探究重载、重写、覆盖的区别 在C++中,有三种不同的函数使用方法:重载(Overloading)、重写(Overriding)和覆盖(Hiding)。虽然它们有些相似之处,但它们各自有不同的用途和行为。以下是它们的详细解释。 重载(Overloading) 重载是指定义多个具有相同名称(函数名)但不同参数列表(参数类型、参数个数或参数顺序)的函数。…

    other 2023年6月26日
    00
  • vue3手动封装弹出框组件message的方法

    下面是针对“vue3手动封装弹出框组件message的方法”的完整攻略: 1. 前置知识 在封装message组件之前,需要掌握Vue3的以下知识点: 使用Vue3的Composition API编写组件 如何在Vue3中进行全局组件注册 如何在Vue3的setup函数中使用provide和inject来进行父子组件之间的通信 2. 开始封装message组…

    other 2023年6月25日
    00
  • DOS命令字典2第2/2页

    DOS命令字典2第2/2页攻略 1. 背景介绍 DOS 命令字典是一份列举了 DOS 命令的参考手册。在使用 DOS 进行命令行操作时,命令字典会帮助你快速查找和学习 DOS 命令的使用方法。 2. 使用步骤 2.1 打开DOS命令字典 在命令行界面下,输入“DOSKEY /MACROFILE=命令字典路径”命令,以载入命令字典。例如: DOSKEY /MA…

    other 2023年6月26日
    00
  • vundle简介安装

    Vundle 简介安装 Vundle 是一个 Vim 插件管理器,可以通过它来轻松地安装和升级 Vim 插件。本文将介绍 Vundle 的基本用法。 安装 Vundle 在使用 Vundle 之前,需要先安装 Vundle。可以通过 Git 命令将 Vundle 下载到本地: git clone https://github.com/VundleVim/Vu…

    其他 2023年3月29日
    00
  • ntfs蓝屏怎么修复? Win11修复 NTFS 文件系统蓝屏死机的技巧

    下面是针对NTFS蓝屏的修复攻略: 1. 前置条件 在进行下面的修复操作之前,请确保: 您的计算机已经进入到了蓝屏错误的状态 您有本机Win11系统安装光盘或USB安装盘 您已经备份了重要文件和数据,因为此操作可能会将数据损坏或丢失 2. 从Win11安装盘进入修复模式 首先,需要从Win11安装盘进入到修复模式。具体步骤如下: 插入Win11系统安装盘或U…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部