隨筆-72  評論-20  文章-0  trackbacks-1

          Spring 的核心是個輕量級容器(container),實(shí)現(xiàn)了IoC(Inversion of Control)模式的容器。Spring的目標(biāo)是實(shí)現(xiàn)一個全方位的整合框架,在Spring框架下實(shí)現(xiàn)多個子框架的組合,這些子框架之間彼此可以獨(dú)立,也可以使用其它的框架方案加以替代,Spring希望提供一站式的框架整合方案。在某些情況下,利用Spring可以不必考慮設(shè)計(jì)模式。因?yàn)镾pring 其實(shí)就是遵從了J2EE的設(shè)計(jì)模式。

          Spring框架具有以下特點(diǎn):

          1.         面向接口的編程。面向接口的編程使開發(fā)者事先知道他們將利用對象的方法。在設(shè)計(jì)應(yīng)用時利用接口對我們獲取實(shí)現(xiàn)的靈活性大有幫助。同時,利用接口使得各層之間的交互耦合性更為松散。

          2.         測試更為容易。利用測試驅(qū)動開發(fā)是快速開發(fā)高質(zhì)量代碼的最佳途徑。它利用在編寫接口和實(shí)現(xiàn)之前先編寫客戶類(測試類)來驅(qū)動設(shè)計(jì)。諸如Eclipse這樣的主流IDE都允許在實(shí)現(xiàn)測試類的同時創(chuàng)建類和方法。Spring使得測試更加容易有如下兩個原因:1)可以在Junit測試用例中很容易的加載和利用 Spring管理的beans。這使得我們可以像平常一樣用任何客戶端與這些beans交互。2)類之間沒有綁定自己的依賴。這樣在測試類中可以忽略 Spring,只用設(shè)置模擬對象(mock objects)來處理依賴關(guān)系即可。

          3.         減少耦合。為了創(chuàng)建一個容易維護(hù)和擴(kuò)展的應(yīng)用,將代碼與特定的資源(例如,可能使用了針對于某個特定數(shù)據(jù)庫的SQL函數(shù))緊密耦合是不明智的。當(dāng)然,如果有合適的函數(shù)可以迅速的實(shí)現(xiàn)功能時,針對于某個特定數(shù)據(jù)庫通常是比較容易的。這種情況下,J2EE設(shè)計(jì)模式通常建議使用工廠模式來減少實(shí)現(xiàn)類與應(yīng)用之間的耦合。

          4.         配置和綁定類之間的依賴關(guān)系。工廠模式使得我們可以輕松的從一個實(shí)現(xiàn)類切換到另一個實(shí)現(xiàn)類。接口和實(shí)現(xiàn)都可以配置在XML文件中并且可以方便的通過改變文件來改變實(shí)現(xiàn)類。

          5.         支持對象/關(guān)系映射的工具。利用支持ORM類的優(yōu)點(diǎn)就是我們不再需要寫繁多的try/catch語句來捕獲API拋出的異常。Spring將這些異常封裝成為運(yùn)行時的異常(runtime exceptions),這樣使得開發(fā)者可以在適當(dāng)?shù)臅r候捕獲發(fā)異常。

          使用Spring的優(yōu)點(diǎn):

          1.         Spring能消除在許多工程上對Singleton的過多使用。

          2.         Spring 能消除使用各種各樣格式的屬性定制文件的需要,在整個應(yīng)用和工程中,可通過一種一致的方法來進(jìn)行配置。

          3.         Spring能通過接口而不是類促進(jìn)好的編程習(xí)慣,減少編程代價到幾乎為零。

          4.         Spring被設(shè)計(jì)為讓使用它創(chuàng)建的應(yīng)用盡可能少的依賴于他的APIs。在Spring

          5.         應(yīng)用中的大多數(shù)業(yè)務(wù)對象沒有依賴于Spring。

          6.         使用Spring構(gòu)建的應(yīng)用程序易于單元測試。

          7.         Spring為數(shù)據(jù)存取提供了一致的框架,不論是使用JDBC或O/R mapping產(chǎn)品(如Hibernate)。

          Spring 的上述優(yōu)點(diǎn),使得Spring 框架成為構(gòu)建信息發(fā)布系統(tǒng)模型層的首選框架。在本課題的實(shí)現(xiàn)過程中,使用了Spring管理的Bean,大大減少了代碼的編寫量的同時,代碼質(zhì)量也有很大的保證。面向接口的編程模式,使得測試同一個接口的不同實(shí)現(xiàn)變得容易,只需要簡單的修改Spring的配置文件,極大地減少了編寫測試代碼的量。 Spring的代理模式和面向方面編程的能力,使得攔截一個方法調(diào)用并在調(diào)用之前或者之后執(zhí)行特定的操作變得簡單。課題實(shí)現(xiàn)過程中的粗話過濾利用了 Spring中面向方面的編程能力攔截信息插入操作,在插入操作執(zhí)行之前進(jìn)行粗話查詢和替換,從而實(shí)現(xiàn)了粗話過濾。在信息插入操作執(zhí)行之后進(jìn)行攔截,給相關(guān)的人員發(fā)送E-mail,以便于通知有事件發(fā)生。Spring中支持事務(wù)管理,同樣使用了攔截器模式,插入或者查詢操作執(zhí)行過程中使用事務(wù),保證了數(shù)據(jù)庫操作代碼的安全性,Spring中可以使用聲明式的事務(wù)管理。對事務(wù)的所有操作都在配置文件中進(jìn)行配置,無須硬編碼到Java代碼中,使得底層的數(shù)據(jù)庫操作實(shí)現(xiàn)類只專注于正常情況下的數(shù)據(jù)庫的操作,其他的事情完全由Spring代理,降低了代碼編寫的難度和復(fù)雜度,并提高了代碼質(zhì)量。


          posted on 2007-08-19 14:42 前方的路 閱讀(377) 評論(0)  編輯  收藏 所屬分類: 軟件架構(gòu)
          主站蜘蛛池模板: 东莞市| 乌鲁木齐县| 河东区| 苏尼特左旗| 岑溪市| 林州市| 玛纳斯县| 西平县| 格尔木市| 南丹县| 昭苏县| 临汾市| 公安县| 临泽县| 渭源县| 榆林市| 常山县| 安国市| 合肥市| 金山区| 东乡族自治县| 高淳县| 晋城| 瓮安县| 淄博市| 精河县| 襄城县| 微博| 米易县| 石狮市| 札达县| 利辛县| 永川市| 康保县| 青阳县| 南昌县| 黔西县| 涞源县| 锦州市| 白山市| 望奎县|