在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的步驟介紹完畢。