在寫RestFul服務的的時候的時候遇到需要指定字段長度大小以及是否為空的時候;網上找到這個@Validated 注解可以解決這個問題。
記錄一個Demo 以備自己日后查看。
添加pom。xml文件依賴
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.7.Final</version>
</dependency>
1、定義一個類
public class User {
@NotEmpty(message = "用戶名不能空")
private String userName;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Max(value = 50, message = "年齡最大不能超過150")
private Integer age;
}
2、寫一個Controller 請求 (在請求中加上
@Validated
)
@PostMapping("/test")
public User getUser( @Validated @RequestBody User user)
{
return user;
}
3、定義異常捕獲
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(value = MethodArgumentNotValidException.class)
public String methodArgumentNotValidExceptionHandler(MethodArgumentNotValidException ex) {
List<ObjectError> allErrors = ex.getBindingResult().getAllErrors();
// 將所有錯誤信息拼接成一個字符串
StringBuilder msg = new StringBuilder();
for (ObjectError error : allErrors) {
msg.append(error.getDefaultMessage() + ";");
}
return msg.toString();
}
}
4、用postman請求

其他用法:
@AssertFalse 校驗false
@AssertTrue 校驗true
@DecimalMax(value=,inclusive=) 小於等於value,
inclusive=true,是小於等於
@DecimalMin(value=,inclusive=) 與上類似
@Max(value=) 小於等於value
@Min(value=) 大於等於value
@NotNull 檢查Null
@Past 檢查日期
@Pattern(regex=,flag=) 正則
@Size(min=, max=) 字符串,集合,map限制大小
@Validate 對po實體類進行校驗
