1,小結 :springboot 各種參數校驗 ,一般除了前端校驗外,后台對接口 也要做強制參數校驗(出於接口安全和參數格式不正確 考慮),規范考慮 一般對外提供的接口 或者 給別人調用 的公用方法(如工具類) 必須要求 強制參數校驗
1.1,常規校驗
1.2 ,分組校驗 @Valid 注解是java javax.validation 包下面 不支持 分組 spring 在其基礎上擴展 了 組 校驗 @Validated
1.3,一般比較復雜的校驗 有可能在 web 不好處理 需要各種判斷 后校驗 這樣可以使用 其提供的工具類 在service 層 提供校驗
1.4 嵌套校驗 一般復雜的結構 嵌套了 對象嵌套了 list 對list 對應字段 校驗
1.5. 自定義校驗,當提供的很多注解無法滿足 要求時 可以考慮自定義注解
1.6 簡單校驗單個參數 springmvc 需要配置
<!-- 方法級別的校驗 要校驗的方法所在類必須添加@Validated注解-->
<bean class="org.springframework.validation.beanvalidation.MethodValidationPostProcessor">
<property name="validator" ref="validator" />
</bean>
全局異常處理
總結:基本平時用的 注解 如下,用法 基本常用的就上面那些了 代碼 具體實現 https://gitee.com/www.lyc.com/lyc-demo.git可以參考 我的代碼庫 整理不易 記得 star 小伙伴們
Bean Validation 中內置的 constraint
@Null 被注釋的元素必須為 null
@NotNull 被注釋的元素必須不為 null
@AssertTrue 被注釋的元素必須為 true
@AssertFalse 被注釋的元素必須為 false
@Min(value) 被注釋的元素必須是一個數字,其值必須大於等於指定的最小值
@Max(value) 被注釋的元素必須是一個數字,其值必須小於等於指定的最大值
@DecimalMin(value) 被注釋的元素必須是一個數字,其值必須大於等於指定的最小值
@DecimalMax(value) 被注釋的元素必須是一個數字,其值必須小於等於指定的最大值
@Size(max=, min=) 被注釋的元素的大小必須在指定的范圍內
@Digits (integer, fraction) 被注釋的元素必須是一個數字,其值必須在可接受的范圍內
@Past 被注釋的元素必須是一個過去的日期
@Future 被注釋的元素必須是一個將來的日期
@Pattern(regex=,flag=) 被注釋的元素必須符合指定的正則表達式
Hibernate Validator 附加的 constraint
@NotBlank(message =) 驗證字符串非null,且長度必須大於0
@Email 被注釋的元素必須是電子郵箱地址
@Length(min=,max=) 被注釋的字符串的大小必須在指定的范圍內
@NotEmpty 被注釋的字符串的必須非空
@Range(min=,max=,message=) 被注釋的元素必須在合適的范圍內
補充的對象類型
補充: userList 必須 加 @Valid 不然校驗不生效
集合類型
必須 @Valid
@Validated 校驗則不生效
總結區別
@Validated 支持分組 作用在類型 上,不支持集合類型
@Valid 不支持 分組可以 作用在 類型,集合,上
對象嵌套校驗可以 兩者一起使用。
https://www.cnblogs.com/javaguide/p/11832752.html