peace嘮叨

          人生得意須盡歡,莫斯金樽空對月。

          為什么需要Spring

          原文出處:http://blog.csdn.net/hudie1234567/article/details/6274305

          為什么需要Spring
            你可能正在想“Spring不過是另外一個的framework”。當已經有許多開放源代碼(和專有) J2EE framework時,我們為什么還需要Spring Framework? 
            Spring是獨特的,因為若干個原因: 
            ◆它定位的領域是許多其他流行的framework沒有的。Spring關注提供一種方法管理你的業務對象。 
            ◆ Spring是全面的和模塊化的。Spring有分層的體系結構,這意味著你能選擇使用它孤立的任何部分,它的架構仍然是內在穩定的。因此從你的學習中,你可得到最大的價值。例如,你可能選擇僅僅使用Spring來簡單化JDBC的使用,或用來管理所有的業務對象。 
            ◆它的設計從底部幫助你編寫易于測試的代碼。Spring是用于測試驅動工程的理想的framework。 
            Spring對你的工程來說,它不需要一個以上的framework。Spring是潛在地一站式解決方案,定位于與典型應用相關的大部分基礎結構。它也涉及到其他framework沒有考慮到的內容。

          Spring帶給我們什么
            ◆方便解耦,簡化開發
            通過Spring提供的IoC容器,我們可以將對象之間的依賴關系交由Spring進行控制,避免硬編碼所造成的過度程序耦合。有了Spring,用戶不必再為單實例模式類、屬性文件解析等這些很底層的需求編寫代碼,可以更專注于上層的應用。
            ◆AOP編程的支持
            通過Spring提供的AOP功能,方便進行面向切面的編程,許多不容易用傳統OOP實現的功能可以通過AOP輕松應付。
            ◆聲明式事務的支持
            在Spring中,我們可以從單調煩悶的事務管理代碼中解脫出來,通過聲明式方式靈活地進行事務的管理,提高開發效率和質量。
            ◆方便程序的測試
            可以用非容器依賴的編程方式進行幾乎所有的測試工作,在Spring里,測試不再是昂貴的操作,而是隨手可做的事情。
            ◆方便集成各種優秀框架
            Spring不排斥各種優秀的開源框架,相反,Spring可以降低各種框架的使用難度,Spring提供了對各種優秀框架(如Struts,Hibernate、Hession、Quartz)等的直接支持。
            ◆降低Java EE API的使用難度
            Spring對很多難用的Java EE API(如JDBC,JavaMail,遠程調用等)提供了一個薄薄的封裝層,通過Spring的簡易封裝,這些Java EE API的使用難度大為降低。
            ◆Java 源碼是經典學習范例
            Spring的源碼設計精妙、結構清晰、匠心獨用,處處體現著大師對Java設計模式靈活運用以及對Java技術的高深造詣。Spring框架源碼無疑是Java技術的最佳實踐范例。如果想在短時間內迅速提高自己的Java技術水平和應用開發水平,學習和研究Spring源碼將會使你收到意想不到的效果。

           

          Spring框架的好處
            在我們進入細節以前,讓我們看一下Spring可以給一個工程帶來的一些好處: 
            ◆Spring能有效地組織你的中間層對象,無論你是否選擇使用了EJB。如果你僅僅使用了Struts或其他的包含了J2EE特有APIs的framework,你會發現Spring關注了遺留下的問題,。 
            ◆Spring能消除在許多工程上對Singleton的過多使用。根據我的經驗,這是一個主要的問題,它減少了系統的可測試性和面向對象特性。 
            ◆Spring能消除使用各種各樣格式的屬性定制文件的需要,在整個應用和工程中,可通過一種一致的方法來進行配置。曾經感到迷惑,一個特定類要查找迷幻般的屬性關鍵字或系統屬性,為此不得不讀Javadoc乃至源編碼嗎?有了Spring,你可很簡單地看到類的JavaBean屬性。倒置控制的使用(在下面討論)幫助完成這種簡化。 
            ◆Spring能通過接口而不是類促進好的編程習慣,減少編程代價到幾乎為零。 
            ◆Spring被設計為讓使用它創建的應用盡可能少的依賴于他的APIs。在Spring應用中的大多數業務對象沒有依賴于Spring。 
            ◆使用Spring構建的應用程序易于單元測試。 
            ◆Spring能使EJB的使用成為一個實現選擇,而不是應用架構的必然選擇。你能選擇用POJOs或local EJBs來實現業務接口,卻不會影響調用代碼。 
            ◆Spring幫助你解決許多問題而無需使用EJB。Spring能提供一種EJB的替換物,它們適于許多web應用。例如,Spring能使用AOP提供聲明性事務而不通過使用EJB容器,如果你僅僅需要與單個的數據庫打交道,甚至不需要JTA實現。 
            ■Spring為數據存取提供了一致的框架,不論是使用JDBC或O/R mapping產品(如Hibernate)。 
            Spring確實使你能通過最簡單可行的解決辦法解決你的問題。這些特性是有很大價值的。 
            總結起來,Spring有如下優點:
            ◆低侵入式設計,代碼污染極低
            ◆ 獨立于各種應用服務器,可以真正實現Write Once,Run Anywhere的承諾
            ◆Spring的DI機制降低了業務對象替換的復雜性
            ◆Spring并不完全依賴于Spring,開發者可自由選用Spring框架的部分或全部

           

          Spring能做什么
            Spring提供許多功能,在此我將快速地依次展示其各個主要方面。 
            首先,讓我們明確Spring范圍。盡管Spring覆蓋了許多方面,但我們已經有清楚的概念,它什么應該涉及和什么不應該涉及。
            Spring的主要目的是使J2EE易用和促進好編程習慣。 
            Spring不重新開發已有的東西。因此,在Spring中你將發現沒有日志記錄的包,沒有連接池,沒有分布事務調度。這些均有開源項目提供(例如Commons Logging 用來做所有的日志輸出,或Commons DBCP用來作數據連接池),或由你的應用程序服務器提供。因為同樣的的原因,我們沒有提供O/R mapping層,對此,已有有好的解決辦法如Hibernate和JDO。
            Spring的目標是使已存在的技術更加易用。
            例如,盡管我們沒有底層事務協調處理,但我們提供了一個抽象層覆蓋了JTA或任何其他的事務策略。 
            Spring沒有直接和其他的開源項目競爭,除非我們感到我們能提供新的一些東西。例如,象許多開發人員,我們從來沒有為Struts高興過,并且感到在MVC web framework中還有改進的余地。在某些領域,例如輕量級的IoC容器和AOP框架,Spring有直接的競爭,但是在這些領域還沒有已經較為流行的解決方案。(Spring在這些區域是開路先鋒。) 
            Spring也得益于內在的一致性。 
            所有的開發者都在唱同樣的的贊歌,基礎想法依然是Expert One-on-One J2EE設計與開發的那些。 
            并且我們已經能夠使用一些主要的概念,例如倒置控制,來處理多個領域。 
            Spring在應用服務器之間是可移植的。 
            當然保證可移植性總是一次挑戰,但是我們避免任何特定平臺或非標準化,并且支持在WebLogic,Tomcat,Resin,JBoss,WebSphere和其他的應用服務器上的用戶。

          posted on 2015-11-17 21:25 王和平 閱讀(257) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          My Links

          Blog Stats

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 巴马| 镇赉县| 邯郸市| 罗江县| 龙胜| 德阳市| 枞阳县| 喜德县| 正宁县| 潜山县| 眉山市| 道孚县| 昌江| 洮南市| 土默特右旗| 扎鲁特旗| 凤冈县| 隆昌县| 遵义县| 蓬溪县| 钟祥市| 慈利县| 泉州市| 巴林左旗| 开鲁县| 张家口市| 霍城县| 马关县| 阳山县| 铁岭市| 响水县| 陕西省| 肥城市| 平塘县| 龙井市| 崇左市| 八宿县| 隆德县| 沙洋县| 炉霍县| 轮台县|