當我們實作某個接口時,都需要對入參數進行校驗。例如下面的代碼
該方法輸入的四個參數都是必填項。用代碼進行參數驗證帶來幾個問題
需要寫大量的代碼來進行參數驗證。
需要通過注釋來直到每個入參的限制是什麼。
每個程式員做參數驗證的方式不一樣,參數驗證不通過抛出的異常也不一樣。
bean validation是一個通過配置注解來驗證參數的架構,它包含兩部分bean validation api和hibernate validator。
bean validation api是java定義的一個驗證參數的規範。
hibernate validator是bean validation api的一個實作。
引入pom
執行個體代碼如下,可以驗證bean,也可以驗證方法參數
執行代碼後,輸出如下:
validation驗證不成功可能傳回多個驗證錯誤資訊,我們可以包裝下,當有錯誤時直接傳回第一個錯誤的異常。
我們可以在每個方法的第一行調用beanvalidator.validate來驗證參數,測試代碼如下,
我們在對外暴露的接口的入參中使用bean validation api配置參數限制,如下xxxservice接口
在getobject的getobjectrequest參數中配置注解來限制參數。
編寫參數驗證攔截器,當方法被調用時,觸發validator驗證器執行驗證,如果不通過則抛出parametervalidationexception。
配置攔截器core-service.xml,攔截xxxservice的所有方法。