java 逻辑校验工具_SpringBoot2.0实战(10)整合fluent-validator优雅业务校验
相關(guān)知識
FluentValidator是一個(gè)工具類庫,使用流式(Fluent Interface)調(diào)用風(fēng)格讓校驗(yàn)跑起來更優(yōu)雅,代碼更簡潔,同時(shí)驗(yàn)證器(Validator)可以做到開閉原則,實(shí)現(xiàn)最大程度的復(fù)用。
github地址:https://github.com/neoremind/fluent-validator
中文使用手冊:http://neoremind.com/2016/02/java的業(yè)務(wù)邏輯驗(yàn)證框架fluent-validator/
特性:
- 驗(yàn)證邏輯與業(yè)務(wù)邏輯不再耦合,摒棄原來不規(guī)范的驗(yàn)證邏輯散落的現(xiàn)象。
- 校驗(yàn)器各司其職,好維護(hù),可復(fù)用,可擴(kuò)展,一個(gè)校驗(yàn)器(Validator)只負(fù)責(zé)某個(gè)屬性或者對象的校驗(yàn),可以做到職責(zé)單一,易于維護(hù),并且可復(fù)用。
- 流式風(fēng)格(Fluent Interface)調(diào)用。
- 使用注解方式驗(yàn)證,可以裝飾在屬性上,減少硬編碼量。
- 支持JSR 303 – Bean Validation標(biāo)準(zhǔn),也就是說可以兼容 Hibernate Validator。
- Spring良好集成
- 回調(diào)給予你充分的自由度,驗(yàn)證過程中發(fā)生的錯誤、異常,驗(yàn)證結(jié)果的返回,開發(fā)人員都可以定制。
目標(biāo)
替換 hibernate-validator 為 fluent-validator,實(shí)現(xiàn)對入?yún)⒌男r?yàn)及異常輸出
操作步驟
添加依賴
添加 fluent-validator 的依賴
因?yàn)?spring-boot 默認(rèn)使用 logback 作為日志輸出組件,所以在引入的時(shí)候需要去掉 fluent-validate 自身的 slf4j
注冊 Fluent-validator
fluent-validate 與 spring 結(jié)合使用 annotation 方式進(jìn)行參數(shù)校驗(yàn),需要借助于 spring 的 AOP,fluent-validate 提供了處理類 FluentValidateInterceptor,但是 fluent-validate 提供的默認(rèn)驗(yàn)證回調(diào)類 DefaultValidateCallback 對校驗(yàn)失敗的情況并沒有處理,所以需要自行實(shí)現(xiàn)一個(gè)
- 自定義異常回調(diào)類
注冊 ValidateCallback 及 FluentValidateInterceptor,并且配置一個(gè) AOP 規(guī)則
全局異常處理編碼
- 添加校驗(yàn)規(guī)則
為業(yè)務(wù)類添加校驗(yàn)規(guī)則,此處,并沒有添加 fluent-validate 注解,而是保持了原來的 hibernate-validate
使用校驗(yàn)在 Controller 接口的參數(shù)前面添加 @FluentValid 注解,替換掉 hibernate-validate 的 @Valid 注解
啟動類
返回結(jié)果為
源碼地址
本章源碼 : hhttps://github.com/caiyuanzi-song/boot.git
結(jié)束語
fluent-validate 可以全方位兼容 hibernate-validate,基于 spring 的 AOP 可以提供基于注解的方法入?yún)⑿r?yàn),同時(shí)也可以提供流式編程的工具類業(yè)務(wù)校驗(yàn),替代 hibernate-validate 的同時(shí)提供了更多擴(kuò)展性。
擴(kuò)展
實(shí)現(xiàn)自定義校驗(yàn)
- 實(shí)現(xiàn)自定義校驗(yàn)類
Validator 接口定義了三個(gè)方法,解釋如下
使用自定義校驗(yàn)添加 sex 屬性,使用 @FluentValidate 注解標(biāo)記使用自定義校驗(yàn)
總結(jié)
以上是生活随笔為你收集整理的java 逻辑校验工具_SpringBoot2.0实战(10)整合fluent-validator优雅业务校验的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 哭嫁 武隆印象原音
- 下一篇: 八卦一下“笑点低”到底低成什么样?什么才