spring功能分析以及優點總結

來源:互聯網
上載者:User

Spring是一個開源架構,它由Rod Johnson建立。它是為瞭解決公司專屬應用程式開發的複雜性而建立的。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限

於伺服器端的開發。從簡單性、可測試性和松耦合的角度而言,任何Java應用都可以從Spring中受益。   
◆目的:解決公司專屬應用程式開發的複雜性   
◆功能:使用基本的JavaBean代替EJB,並提供了更多的公司專屬應用程式功能   
◆範圍:任何Java應用   簡單來說,Spring是一個輕量級的控制反轉(IoC)和面向切面(AOP)的容器架構。  
◆輕量——從大小與開銷兩方面而言Spring都是輕量的。完整的Spring架構可 以在一個大小隻有1MB多的JAR檔案裡發布。並且Spring所需的處理開銷也是微不足道的。此外, Sping是

非侵入式的:典型地,Spring應用中的對象不依賴於Spring的特定類。
◆控制反轉——Spring通過一種稱作控制反轉(IoC)的技術促進了松耦合。當應用了IoC,一個對象依賴的其它對象會通過被動的方式傳遞進來,而不是這個對象自己建立或者尋找依賴對象

。你可以認為IoC與JNDI相反——不是對象從容器中尋找依賴,而是容器在對象初始化時不等對象請求就主動將依賴傳遞給它。   
◆面向切面——Spring提供了面向切面編程的豐富支援,允許通過分離應用的商務邏輯與系統級服務(例如審計(auditing)和事務(transaction)管理)進行內聚性的開發。應用對象只實

現它們應該做的——完成商務邏輯——僅此而已。它們並不負責(甚至是意識)其它的系統級關注點,例如日誌或事務支援。  
◆容器——Spring包含並管理應用對象的配置和生命週期,在這個意義上它是一種容器,你可以配置你的每個bean如何被建立——基於一個可配置原型(prototype),你的bean可以建立一個

單獨的執行個體或者每次需要時都產生一個新的執行個體——以及它們是如何相互關聯的。然而,Spring不應該被混同於傳統的重量級的EJB容器,它們經常是龐大與笨重的,難以使用。   
◆架構——Spring可以將簡單的組件配置、組合成為複雜的應用。在Spring中,應用對象被聲明式地組合,典型地是在一個XML檔案裡。Spring也提供了很多基礎功能(交易管理、持久化架構

整合等等),將應用邏輯的開發留給了你。   所有Spring的這些特徵使你能夠編寫更乾淨、更可管理、並且更易於測試的代碼。它們也為Spring中的各種模組提供了基礎支援。
起源:
  你可能正在想“Spring不過是另外一個的framework”。當已經有許多開放原始碼(和專有) J2EE framework時,我們為什麼還需要Spring Framework?   Spring是獨特的,因為若干個

原因:   
◆它定位的領域是許多其他流行的framework沒有的。Spring關注提供一種方法管理你的業務對象。  
◆ Spring是全面的和模組化的。Spring有分層的體繫結構,這意味著你能選擇使用它孤立的任何部分,它的架構仍然是內在穩定的。因此從你的學習中,你可得到最大的價值。例如,你可能選

擇僅僅使用Spring來簡單化JDBC的使用,或用來管理所有的業務對象。   
◆它的設計從底部協助你編寫易於測試的代碼。Spring是用於測試驅動工程的理想的framework。Spring對你的工程來說,它不需要一個以上的framework。Spring是潛在地一站式解決方案,

定位於與典型應用相關的大部分基礎結構。它也涉及到其他framework沒有考慮到的內容。
特點:
◆方便解耦,簡化開發   通過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能有效地組織你的中介層對象,無論你是否選擇使用了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架構的部分或全部

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.