validation主要是校驗(yàn)用戶提交的數(shù)據(jù)的合法性,比如是否為空,密碼是否符合規(guī)則,郵箱格式是否正確等等,校驗(yàn)框架比較多,用的比較多的是hibernate-validator, 也支持國(guó)際化,也可以自定義校驗(yàn)類型的注解,這里只是簡(jiǎn)單的演示校驗(yàn)框架在Spring Boot中的簡(jiǎn)單集成,要想了解更多可以參考 hibernate-validator
1. pom.xml
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId></dependency>
2. dto
public class UserInfoIDto { private Long id; @NotBlank @Length(min=3, max=10) private String username; @NotBlank @Email private String email; @NotBlank @Pattern(regexp="^((13[0-9])|(15[^4,\\D])|(18[0,3-9]))\\d{8}$", message="手機(jī)號(hào)格式不正確") private String phone; @Min(value=18) @Max(value = 200) private int age; @NotBlank @Length(min=6, max=12, message="昵稱長(zhǎng)度為6到12位") private String nickname; // Getter & Setter}
3. controller
import org.springframework.validation.BindingResult;import org.springframework.validation.FieldError;@RestControllerpublic class SimpleController { @PostMapping("/users") public String register(@Valid @RequestBody UserInfoIDto userInfoIDto, BindingResult result){ if (result.hasErrors()) { FieldError fieldError = result.getFieldError(); String field = fieldError.getField(); String msg = fieldError.getDefaultMessage(); return field + ":" + msg; } System.out.println("開(kāi)始注冊(cè)用戶..."); return "success"; }}

4. 常用的約束注解
- @Null 被注釋的元素必須為 null
- @NotNull 被注釋的元素必須不為 null
- @AssertTrue 被注釋的元素必須為 true
- @AssertFalse 被注釋的元素必須為 false
- @Min(value) 被注釋的元素必須是一個(gè)數(shù)字,其值必須大于等于指定的最小值
- @Max(value) 被注釋的元素必須是一個(gè)數(shù)字,其值必須小于等于指定的最大值
- @DecimalMin(value) 被注釋的元素必須是一個(gè)數(shù)字,其值必須大于等于指定的最小值
- @DecimalMax(value) 被注釋的元素必須是一個(gè)數(shù)字,其值必須小于等于指定的最大值
- @Size(max=, min=) 被注釋的元素的大小必須在指定的范圍內(nèi)
- @Digits (integer, fraction) 被注釋的元素必須是一個(gè)數(shù)字,其值必須在可接受的范圍內(nèi)
- @Past 被注釋的元素必須是一個(gè)過(guò)去的日期
- @Future 被注釋的元素必須是一個(gè)將來(lái)的日期
- @Pattern(regex=,flag=) 被注釋的元素必須符合指定的正則表達(dá)式
- Hibernate Validator 附加的 constraint
- @NotBlank(message =) 驗(yàn)證字符串非null,且長(zhǎng)度必須大于0
- @Email 被注釋的元素必須是電子郵箱地址
- @Length(min=,max=) 被注釋的字符串的大小必須在指定的范圍內(nèi)
- @NotEmpty 被注釋的字符串的必須非空
- @Range(min=,max=,message=) 被注釋的元素必須在合適的范圍內(nèi)
- @URL(protocol=,host=, port=, regexp=, flags=) 被注釋的字符串必須是一個(gè)有效的url
- @CreditCardNumber 被注釋的字符串必須通過(guò)Luhn校驗(yàn)算法,銀行卡,信用卡等號(hào)碼一般都用Luhn計(jì)算合法性
- @ScriptAssert(lang=, script=, alias=) 要有Java Scripting API 即JSR 223 (“Scripting for the JavaTM Platform”)的實(shí)現(xiàn)
- @SafeHtml(whitelistType=, additionalTags=) classpath中要有jsoup包