用fluent-validator,進行Java服務端驗證

du_xian_sheng發表於2018-06-19

一.maven依賴

  <!-- fluent 驗證 -->
<dependency>
    <groupId>com.baidu.unbiz</groupId>
    <artifactId>fluent-validator</artifactId>
    <version>1.0.5</version>
</dependency>
<!-- fluent 驗證 的 hibernate-valiedator依賴-->
<dependency>
    <groupId>com.baidu.unbiz</groupId>
    <artifactId>fluent-validator-jsr303</artifactId>
    <version>1.0.5</version>
</dependency>
<!--Validator用spring託管-->
<dependency>
    <groupId>com.baidu.unbiz</groupId>
    <artifactId>fluent-validator-spring</artifactId>
    <version>1.0.5</version>
</dependency>

 

二.使用方式

  A.1

 實體類:

驗證類:

LenthValidator:

測試:

輸出結果:

B.2

實體類相同這次結合Hibernat-valiedator

測試:

這裡用到了hibernate-valiedator的註解

測試結果:

C.3

實體類:

測試類:

 測試結果:

這裡用了failOver()方法

當出現校驗失敗時,也就是Validator的validate()方法返回了false,那麼是繼續還是直接退出呢?預設為使用failFast()方法,直接退出,如果你想繼續完成所有校驗,使用failOver()來skip掉。

三。總結

三種驗證方式各有優劣,相互結合才能達到完美驗證。

A1.能應付所有驗證,但對於欄位較多的實體,驗證程式碼過於冗長。

B2.用註解的方式驗證,程式碼簡潔優雅,但對於同一個欄位不同場景下需要不同驗證的情況沒辦法解決。

C2.同B2,註解可以直接寫驗證方法,程式碼簡潔,但是也是不夠靈活

相關文章