在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}$"; // 手机号正则表达式@Overridepublic void initialize(Phone phone) {}@Overridepublic 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的步骤介绍完毕。