1. 程式人生 > >自己寫的基於java Annotation(註解)的資料校驗框架

自己寫的基於java Annotation(註解)的資料校驗框架

原始碼和UT請見http://download.csdn.net/source/2640884

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方法和類作用域註解的支援。

真誠希望和大家一起交流,有興趣的可以進行擴充套件。非常感謝!!!