当前位置:首页 > 科技  > 软件

如何优雅构建自定义 Spring Boot 验证器,让你的代码更加丝滑!

来源: 责编: 时间:2023-10-08 07:05:07 368观看
导读介绍作为一名开发人员,你应该知道确保应用程序中流动的数据的准确性和完整性是多么重要。Spring Boot提供了强大的验证功能,但有时我们需要额外的验证,创建适合特定需求的自定义验证器。接下来,我们来介绍下如何完整的创

介绍

ZhY28资讯网——每日最新资讯28at.com

作为一名开发人员,你应该知道确保应用程序中流动的数据的准确性和完整性是多么重要。Spring Boot提供了强大的验证功能,但有时我们需要额外的验证,创建适合特定需求的自定义验证器。ZhY28资讯网——每日最新资讯28at.com

接下来,我们来介绍下如何完整的创建一个自定义验证器。ZhY28资讯网——每日最新资讯28at.com

步骤1:准备Spring Boot应用程序

首先,确保你已经设置了一个Spring Boot项目。可以选择使用Maven或Gradle作为构建工具。在项目的配置文件(pom.xml或build.gradle)中包含必要的依赖项,如spring-boot-starter-web和
spring-boot-starter-validation。
ZhY28资讯网——每日最新资讯28at.com

步骤2:创建模型类

创建一个模型类来表示要验证的数据。例如,创建一个简单的User类,包含一个用户名和电子邮件字段:ZhY28资讯网——每日最新资讯28at.com

public class User {    private String username;    private String email;    // getters and setters}

步骤3:创建自定义验证器

接下来,通过实现org.springframework.validation.Validator接口来创建一个自定义验证器类。该接口定义了supports()和validate()两个方法。ZhY28资讯网——每日最新资讯28at.com

supports()方法检查验证器是否支持给定的类。在我们的例子中,我们想要验证User类,所以如果提供的类是User类或其子类之一,则该方法应返回true。ZhY28资讯网——每日最新资讯28at.com

validate()方法执行实际的验证逻辑,我们可以访问正在验证的对象,执行检查,并使用
org.springframework.validation.Errors对象添加验证错误。
ZhY28资讯网——每日最新资讯28at.com

以下是User类的自定义验证器示例:ZhY28资讯网——每日最新资讯28at.com

import org.springframework.validation.Errors;import org.springframework.validation.ValidationUtils;import org.springframework.validation.Validator;public class UserValidator implements Validator {    @Override    public boolean supports(Class<?> clazz) {        return User.class.equals(clazz);    }    @Override    public void validate(Object target, Errors errors) {        User user = (User) target;        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "username", "NotEmpty");        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "email", "NotEmpty");        // Add additional validation logic        // Example:        // if (user.getUsername().length() < 5) {        //     errors.rejectValue("username", "Size.userForm.username");        // }    }}

步骤4:注册自定义验证器

为了让Spring Boot知道自定义验证器,我们需要进行注册。打开应用程序的配置类(通常使用@Configuration注解),并添加一个@Bean方法来实例化自定义验证器。ZhY28资讯网——每日最新资讯28at.com

import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.validation.Validator;import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;@Configurationpublic class AppConfig {    @Bean    public Validator validator() {        return new UserValidator();    }    // 其他配置类和方法...}

步骤5:使用自定义验证器

要将自定义验证器应用于所需的端点,需要使用@Valid注解相应的方法参数,来触发该对象的验证过程。例如,有一个用于创建新用户的RESTful端点:ZhY28资讯网——每日最新资讯28at.com

@RestController@RequestMapping("/users")public class UserController {    @PostMapping    public ResponseEntity<String> createUser(@Valid @RequestBody User user) {        // 处理用户创建逻辑        return ResponseEntity.ok("User created successfully");    }}

在这个例子中,对user参数使用@Valid注解表示应该使用注册的自定义验证器进行验证。ZhY28资讯网——每日最新资讯28at.com

步骤6:提供错误消息

为了给自定义验证约束提供有意义的错误消息,需要在项目的src/main/resources目录中创建一个messages.properties文件。该文件用于不同的验证约束定义自定义错误消息。打开messages.properties文件并添加以下条目:ZhY28资讯网——每日最新资讯28at.com

# 自定义错误消息NotEmpty.user.username=Username cannot be emptyNotEmpty.user.email=Email cannot be emptySize.userForm.username=Username must be at least 5 characters long

在上面的示例中,我们为NotEmpty和Size约束定义了错误消息。ZhY28资讯网——每日最新资讯28at.com

步骤7:测试自定义验证器

现在,我们可以通过触发验证过程来测试自定义验证器。如果发生任何验证错误,它们将自动添加到BindingResult对象中。例如,假设有一个用于创建新用户的请求:ZhY28资讯网——每日最新资讯28at.com

POST /usersContent-Type: application/json{  "username": "",  "email": "test@example.com"}

当发送这个请求时,验证过程将被触发,如果用户名字段为空,将会向BindingResult中添加一个验证错误。ZhY28资讯网——每日最新资讯28at.com

为了处理验证错误,我们可以修改UserController中的createUser方法,如下所示:ZhY28资讯网——每日最新资讯28at.com

@PostMappingpublic ResponseEntity<String> createUser(@Valid @RequestBody User user, BindingResult bindingResult) {    if (bindingResult.hasErrors()) {        // 处理验证错误        List<ObjectError> errors = bindingResult.getAllErrors();        // 按需处理并返回错误消息        // 示例: return ResponseEntity.badRequest().body(errors.toString());    }    // 如果验证通过,继续处理用户创建逻辑    return ResponseEntity.ok("User created successfully");}

在这个例子中,如果存在验证错误,可以使用bindingResult.getAllErrors()从BindingResult对象中检索错误。然后,根据应用程序的需求处理和处理这些错误。ZhY28资讯网——每日最新资讯28at.com

这样,我们已经成功地在Spring Boot应用程序中创建并使用了自定义验证器。自定义验证器允许我们为特定字段或对象定义自己的验证逻辑和错误消息,从而控制验证过程。ZhY28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-12294-0.html如何优雅构建自定义 Spring Boot 验证器,让你的代码更加丝滑!

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 六个为Rust构建的IDE

下一篇: 分享30个避免低级Bug的代码技巧清单!

标签:
  • 热门焦点
  • 俄罗斯:将审查iPhone等外国公司设备 保数据安全

    iPhone和特斯拉都属于在各自领域领头羊的品牌,推出的产品也也都是数一数二的,但对于一些国家而言,它们的产品可靠性和安全性还是在限制范围内。近日,俄罗斯联邦通信、信息技术
  • 6月安卓手机好评榜:魅族20 Pro蝉联冠军

    性能榜和性价比榜之后,我们来看最后的安卓手机好评榜,数据来源安兔兔评测,收集时间2023年6月1日至6月30日,仅限国内市场。第一名:魅族20 Pro好评率:95%5月份的时候魅族20 Pro就是
  • Flowable工作流引擎的科普与实践

    一.引言当我们在日常工作和业务中需要进行各种审批流程时,可能会面临一系列技术和业务上的挑战。手动处理这些审批流程可能会导致开发成本的增加以及业务复杂度的上升。在这
  • 微信语音大揭秘:为什么禁止转发?

    大家好,我是你们的小米。今天,我要和大家聊一个有趣的话题:为什么微信语音不可以转发?这是一个我们经常在日常使用中遇到的问题,也是一个让很多人好奇的问题。让我们一起来揭开这
  • 19个 JavaScript 单行代码技巧,让你看起来像个专业人士

    今天这篇文章跟大家分享18个JS单行代码,你只需花几分钟时间,即可帮助您了解一些您可能不知道的 JS 知识,如果您已经知道了,就当作复习一下,古人云,温故而知新嘛。现在,我们就开始今
  • 一文掌握 Golang 模糊测试(Fuzz Testing)

    模糊测试(Fuzz Testing)模糊测试(Fuzz Testing)是通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。可以用来发现应用程序、操作系统和网络协议等中的漏洞或
  • 重估百度丨“晚熟”的百度云,能等到春天吗?

    &copy;自象限原创作者|程心排版|王喻可2016年7月13日,百度云计算战略发布会在北京举行,宣告着百度智能云的正式启程。彼时的会场座无虚席,甚至排队排到了门外,在场的所有人几乎都
  • 慕岩炮轰抖音,百合网今何在?

    来源:价值研究所 作者:Hernanderz&ldquo;难道就因为自己的一个产品牛逼了,从客服到总裁,都不愿意正视自己产品和运营上的问题,选择逃避了吗?&rdquo;这一番话,出自百合网联合创
  • ESG的面子与里子

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之三伏大幕拉起,各地高温预警不绝,但处于厄尔尼诺大&ldquo;烤&rdquo;之下的除了众生,还有各大企业发布的ESG报告。ESG是&ldquo;环境保
Top