Spring框架的優點都有什麼?

  1. Spring是分層的架構,你可以選擇使用你需要的層而不用管不需要的部分
  2. Spring是POJO編程,POJO編程使得可持續構建和可測試能力提高
  3. 依賴注入和IoC使得JDBC操作簡單化
  4. Spring是開源的免費的
  5. 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是一個輕量級的控制反轉(IoC)和麪向切面(AOP)的容器框架。

輕量——從大小與開銷兩方面而言Spring都是輕量的。完整的Spring框架可以在一個大小隻有1MB多的JAR文件裏發佈。並 且Spring所需的處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應用中的對象不依賴於Spring的特定類。

控制反轉——Spring通過一種稱作控制反轉(IoC)的技術促進了鬆耦 合。當應用了IoC,一個對象依賴的其它對象會通過被動的方式傳遞進來,而不是這個對象自己創建或者查找依賴對象。你可以認爲IoC與JNDI相反——不 是對象從容器中查找依賴,而是容器在對象初始化時不等對象請求就主動將依賴傳遞給它。
面向切面——Spring提供了面向切面編程的豐富支持,允許通過分離應用的 業務邏輯與系統級服務(例如審計(auditing)和事務()管理)進行內聚性的開發。應用對象只實現它們應該做的——完成業務邏輯——僅此而已。它們 並不負責(甚至是意識)其它的系統級關注點,例如日誌或事務支持。
容器——Spring包含並管理應用對象的配置和生命週期,在這個意義上它是 一種容器,你可以配置你的每個bean如何被創建——基於一個可配置原型(prototype),你的bean可以創建一個單獨的實例或者每次需要時都生 成一個新的實例——以及它們是如何相互關聯的。然而,Spring不應該被混同於傳統的重量級的EJB容器,它們經常是龐大與笨重的,難以使用。
框架——Spring可以將簡單的組件配置、組合成爲複雜的應用。在Spring中,應用對象被聲明式地組合,典型地是在一個XML文件裏。Spring也提供了很多基礎功能(事務管理、持久化框架集成等等),將應用邏輯的開發留給了你。



對IoC(Inversion of Control)的理解

一個類需要用到某個接口的方法,我們需要將類A和接口B的實現關聯起來,最簡單的方法是類A中創建一個對於接口B的實現C的實例,但這種方法顯然兩者的依賴(Dependency)太大了。而IoC的方法是隻在類A中定義好用於關聯接口B的實現的方法,將類A,接口B和接口B的實現C放入IoC的 容器(Container)中,通過一定的配置由容器(Container)來實現類A與接口B的實現C的關聯。

Spring中實現DI(Dependency Injection)的幾種方式

方式一:接口注入,在實際中得到了普遍應用,即使在IOC的概念尚未確立時,這樣的方法也已經頻繁出現在我們的代碼中。
方式二:Type2 IoC: Setter injection對象創建之後,將被依賴對象通過set方法設置進去
方式三:Type3 IoC: Constructor injection對象創建時,被依賴對象以構造方法參數的方式注入
Spring的方式

Spring對多種ORM框架提供了很好的支持,簡單描述在Spring中使用Hibernate的方法。

在context中定義DataSource,創建SessionFactoy,設置參數;DAO類繼承HibernateDaoSupport,實現具體接口,從中獲得HibernateTemplate進行具體操作。在使用中如果遇到OpenSessionInView的問題,可以添加OpenSessionInViewFilter或OpenSessionInViewInterceptor。


發佈了64 篇原創文章 · 獲贊 3 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章