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