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

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

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

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

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

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

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

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

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

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

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

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

          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,大大減少了代碼的編寫量的同時(shí),代碼質(zhì)量也有很大的保證。面向接口的編程模式,使得測試同一個(gè)接口的不同實(shí)現(xiàn)變得容易,只需要簡單的修改Spring的配置文件,極大地減少了編寫測試代碼的量。 Spring的代理模式和面向方面編程的能力,使得攔截一個(gè)方法調(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)
          主站蜘蛛池模板: 临泉县| 交城县| 肇州县| 宽城| 临西县| 玛曲县| 岳阳市| 博兴县| 镇坪县| 安庆市| 湄潭县| 宜州市| 静安区| 肇东市| 武义县| 永胜县| 察雅县| 乡城县| 兴海县| 百色市| 连江县| 大安市| 宁夏| 紫云| 奎屯市| 陇南市| 阿坝| 衡阳市| 偏关县| 错那县| 松溪县| 德钦县| 湖口县| 盐亭县| 朝阳市| 新干县| 高安市| 新田县| 石泉县| 留坝县| 莎车县|