(企业 / 公司项目)SpringBoot3整合校验框架validation

2023-12-13 04:15:02

在Spring Boot项目中使用校验框架validation可以让我们更方便地实现数据校验和错误提示。下面是Spring Boot集成校验框架validation的步骤。

????????添加依赖

在项目的pom.xml文件中添加validation依赖:

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

????????定义实体类

定义需要校验的实体类,并在属性上添加@NotBlank、@Max、@Min等校验注解。例如:

public class User {
    @NotBlank(message = "用户名不能为空")
    private String username;

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

    @Max(value = 100, message = "年龄不能超过100岁")
    @Min(value = 0, message = "年龄不能小于0岁")
    private int age;

    // ... getter/setter
}

????????编写校验逻辑

在Controller中编写校验逻辑,首先需要在方法入参中添加@Valid注解,触发校验。例如:

@RestController
public class UserController {

    @PostMapping("/user")
    public Result saveUser(@Valid @RequestBody User user) {
        // 保存用户信息
        // ...
        return Result.success();
    }

    // ...
}

????????处理校验错误

在Controller中通过添加BindingResult类型的参数来获取校验结果,并进行错误处理。例如:

@RestController
public class UserController {

    @PostMapping("/user")
    public Result saveUser(@Valid @RequestBody User user, BindingResult bindingResult) {
        if (bindingResult.hasErrors()) {
            return Result.failure(bindingResult.getAllErrors().get(0).getDefaultMessage());
        }
        // 保存用户信息
        // ...
        return Result.success();
    }

    // ...
}

BindingResult中存储了所有的校验错误信息。我们可以通过getAllErrors()方法获取所有错误信息,然后根据需要进行处理。

????????自定义校验注解

在实际开发中,我们可能需要定义自己的校验注解。这时需要定义注解和对应的校验器。例如,定义一个手机号码校验注解和对应的校验器:

@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = PhoneValidator.class)
public @interface Phone {

    String message() default "手机号格式不正确";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};
}

public class PhoneValidator implements ConstraintValidator<Phone, String> {

    private static final String REGEX_PHONE = "^1[3456789]\\d{9}$"; // 手机号正则表达式

    @Override
    public void initialize(Phone phone) {
    }

    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {
        if (StringUtils.isBlank(value)) {
            return true; // 忽略空值,由@NotBlank注解校验
        }
        return Pattern.matches(REGEX_PHONE, value);
    }
}

然后在实体类中使用该注解:

public class User {
    // ...

    @Phone(message = "手机号格式不正确")
    private String phone;

    // ... getter/setter
}

至此,Spring Boot集成校验框架validation的步骤介绍完毕。

文章来源:https://blog.csdn.net/qq_60870118/article/details/134879667
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。