自己寫的基於java Annotation(注解)的數據校驗框架


JavaEE6中提供了基於java Annotation(注解)的Bean校驗框架,Hibernate也有類似的基於Annotation的數據校驗功能,我在工作中,產品也經常需要使 用數據校驗,為了方便和重用,自己寫了一個簡單的基於Annotation的校驗框架。有興趣的可以擴展。

 

框架說明:

AnnotationValidable接口:所有需要使用該校驗框架的類都要實現它,該類中沒有任何方法需要實現,僅僅是一個表明那些類需要使用該校驗框架的標識。

GetFiledValue類:是一個工具類,對外提供一個靜態方法public static Object getField(AnnotationValidable filter, String field)用於獲得指定類對象的指定屬性值。

Handler接口:是所有校驗處理的接口。

ValidateException類:是校驗框架中任何異常均被封裝成該異常對象向上拋出。

 

該校驗框架所提供的校驗注解有:

@ValidateDigit:校驗是否是數字。

@ValidateInt:校驗整型數據,可以指定最大值或最小值。

@ValidateNotEmpty:校驗集合對象中不能為空。

@ValidateNotLaterThan:校驗一個時間或日期不能比另一個時間或日期晚。

@ValidateNotNull:校驗對象不能為NULL。

@ValidatePattern:針對字符串的高級校驗,可以指定字符串的正則表達式。

@ValidateSize:校驗字符串的長度,可以指定最長長度或最短長度。

@ValidateStringIn:校驗字符串中包含指定的字符(串),多個字符(串)用“,”分隔。

所有以上的注解都有一個message屬性用於指定校驗出差時異常信息內容,都有默認值,可以指定也可以不用指定。

這些注解里面的一些其他參數用法請參考UT中的測試用例。

 

以上所有的注解都有一個對應的Handler用於處理該注解,這些handler都實現Handler接口。

這些Handler具體負責每個對應的注解的校驗,如果校驗失敗則拋出ValidateException異常。

 

校驗框架最核心的是Validator,這個類是一個單態模式,使用時只需要調用其public void validate(AnnotationValidable validatedObj)方法,把需要校驗的實現了AnnotationValidable接口的對象當作參數傳進去就可以了。

Validator的工作原理是:

1.獲得校驗對象后,掃描該對象中是否存在自定義的校驗注解,存在就去調用相應的注解處理類(對應的handler)進行校驗。

2.校驗對象校驗結束后,遞歸校驗其父類,直到AnnotationValidable接口為止。

 

優點:

1.使用方便,重用性高。

2.可以根據需求進行定制化開發。

3.適合后台的數據校驗。

 

不足:

1.對應java Annotation不熟悉的人可能不太好上手。

2.有重復造輪子之嫌。

3.功能有限,目前只實現了在字段上注解的校驗,尚未實現對get方法和類作用域注解的支持。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM