spring框架搭建筆記

◆簡介
  • 目的:解決企業應用開發的複雜性
  • 功能:使用基本的JavaBean代替EJB,並提供了更多的企業應用功能
  • 範圍:任何Java應用

Spring 框架是一個分層架構,由 7 個定義良好的模塊組成。Spring 模塊構建在覈心容器之上,核心容器定義了創建、配置和管理 bean 的方式。


 
組成 Spring 框架的每個模塊(或組件)都可以單獨存在,或者與其他一個或多個模塊聯合實現。每個模塊的功能如下:
核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要組件是 BeanFactory,它是工廠模式的實現。BeanFactory 使用控制反轉 (IOC) 模式將應用程序的配置和依賴性規範與實際的應用程序代碼分開。
Spring 上下文:Spring 上下文是一個配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企業服務,例如 JNDI、EJB、電子郵件、國際化、校驗和調度功能。
Spring AOP:通過配置管理特性,Spring AOP 模塊直接將面向方面的編程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何對象支持 AOP。Spring AOP 模塊爲基於 Spring 的應用程序中的對象提供了事務管理服務。通過使用 Spring AOP,不用依賴 EJB 組件,就可以將聲明性事務管理集成到應用程序中。
Spring DAO:JDBC DAO 抽象層提供了有意義的異常層次結構,可用該結構來管理異常處理和不同數據庫供應商拋出的錯誤消息。異常層次結構簡化了錯誤處理,並且極大地降低了需要編寫的異常代碼數量(例如打開和關閉連接)。Spring DAO 的面向 JDBC 的異常遵從通用的 DAO 異常層次結構。
Spring ORM:Spring 框架插入了若干個 ORM 框架,從而提供了 ORM 的對象關係工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有這些都遵從 Spring 的通用事務和 DAO 異常層次結構。
Spring Web 模塊:Web 上下文模塊建立在應用程序上下文模塊之上,爲基於 Web 的應用程序提供了上下文。所以,Spring 框架支持與 Jakarta Struts 的集成。Web 模塊還簡化了處理多部分請求以及將請求參數綁定到域對象的工作。
Spring MVC 框架:MVC 框架是一個全功能的構建 Web 應用程序的 MVC 實現。通過策略接口,MVC 框架變成爲高度可配置的,MVC 容納了大量視圖技術,其中包括 JSP、Velocity、Tiles、iText 和 POI。
Spring 框架的功能可以用在任何 J2EE 服務器中,大多數功能也適用於不受管理的環境。Spring 的核心要點是:支持不綁定到特定 J2EE 服務的可重用業務和數據訪問對象。毫無疑問,這樣的對象可以在不同 J2EE 環境 (Web 或 EJB)、獨立應用程序、測試環境之間重用。

◆Spring作爲全方位的應用程序框架(Framework)



◆術語描述
輕量級(Lightweight)。Spring 核心包容量不到1MB的大小,可以在很多小型設備中使用Spring。
非侵入性(No intrusive)。增強應用程序組件的可重用性,減少對框架的依賴。
容器(Container)。根據配置文件自動生成對象及屬性等,不用編寫任何代碼來產生對象。
Inversion of Control(IOC)與Dependency Injection(DI)。IOC目的就是依賴於抽象;對象之間的關係由容器根據配置文件將依賴注入指定的對象中。
AOP(Aspect-oriented programming)。基於代理及攔截器的機制,與Spring IOC 結合,採用運行時Weaving方式在Spring框架的應用程序中使用各種聲明式系統級服務。
持久層(Persistent)。Spring提供DAO、編程事務與聲明式事務,對於ORM工具(Hibernate、iBATIS)的整合及使用上簡化。
JavaEE服務。可以使用JavaEE標準規範提供的各項服務,並無縫結合。

◆Spring框架的優勢
使J2EE易用和促進好編程習慣。
Spring不重新開發已有的東西。因此,在Spring中你將發現沒有日誌記錄的包,沒有連接池,沒有分佈事務調度。這些均有開源項目提供(例如Commons Logging 用來做所有的日誌輸出,或Commons DBCP用來作數據連接池),或由你的應用程序服務器提供。因爲同樣的的原因,我們沒有提供O/R mapping層,對此,已有好的解決辦法如Hibernate和JPA。
使已存在的技術更加易用。
例如,儘管我們沒有底層事務協調處理,但我們提供了一個抽象層覆蓋了JTA或任何其他的事務策略。
沒有直接和其他的開源項目競爭。
例如,許多開發人員,我們從來沒有爲Struts高興過,並且感到在MVC框架中還有改進的餘地。在某些領域,例如輕量級的IoC容器和AOP框架,Spring有直接的競爭,但是在這些領域還沒有已經較爲流行的解決方案。(Spring在這些區域是開路先鋒。)
Spring在應用服務器之間是可移植的。保證可移植性總是一項挑戰,但是Spring避免任何特定平臺或非標準化,並且支持在WebLogic,Tomcat,Resin,JBoss,WebSphere和其他的應用服務器上的用戶。
方便解耦,簡化開發。
通過Spring提供的IoC容器,我們可以將對象之間的依賴關係交由Spring進行控制,避免硬編碼所造成的過度程序耦合。有了Spring,用戶不必再爲單實例模式類、屬性文件解析等這些很底層的需求編寫代碼,可以更專注於上層的應用。
AOP編程的支持。
通過Spring提供的AOP功能,方便進行面向切面的編程,許多不容易用傳統OOP實現的功能可以通過AOP輕鬆應付。
聲明式事務的支持
  在Spring中,我們可以從單調煩悶的事務管理代碼中解脫出來,通過聲明式方式靈活地進行事務的管理,提高開發效率和質量。
方便程序的測試
  可以用非容器依賴的編程方式進行幾乎所有的測試工作,在Spring裏,測試不再是昂貴的操作,而是隨手可做的事情。
方便集成各種優秀框架
  Spring不排斥各種優秀的開源框架,相反,Spring可以降低各種框架的使用難度,Spring提供了對各種優秀框架(如Struts,Hibernate)等的直接支持。
降低Java EE API的使用難度
Spring對很多難用的Java EE API(如JDBC,JavaMail,遠程調用等)提供了一個薄薄的封裝層,通過Spring的簡易封裝,這些Java EE API的使用難度大爲降低。

下載、設置Spring
http://springframework.org/




準備Spring設計環境



編寫第一個Spring程序
HelloWorld接口:

Java代碼  收藏代碼
  1. /** 
  2.  *  
  3.  * @Copyright(C),2009-2010 SISE Java Team. 
  4.  * @Author:easinchu 
  5.  * @Email:[email protected]  
  6.  * @Description: 
  7.  */  
  8. public interface HelloWorld {  
  9.   
  10.     public void sayHello();  
  11. }  

HelloWorldBean實現類:
Java代碼  收藏代碼
  1. /** 
  2.  *  
  3.  * @Copyright(C),2009-2010 SISE Java Team. 
  4.  * @Author:easinchu 
  5.  * @Email:[email protected]  
  6.  * @Description: 
  7.  */  
  8. public class HelloWorldBean implements HelloWorld{  
  9.   
  10.     private String helloWorld;  
  11.       
  12.     public void setHelloWorld(String helloWorld) {  
  13.         this.helloWorld = helloWorld;  
  14.     }  
  15.       
  16.     public void sayHello() {  
  17.         System.out.println(helloWorld);  
  18.     }  
  19. }  

Spring XML配置文件ioc-config.xml:
Xml代碼  收藏代碼
  1. <bean id="helloWorldBean" class="cn.com.sise.firstapp.HelloWorldBean">  
  2.     <property name="helloWorld">  
  3.         <value>Hello,Welcome To Spring World!</value>  
  4.     </property>  
  5. </bean>  

測試類:
Java代碼  收藏代碼
  1. import org.springframework.beans.factory.BeanFactory;  
  2. import org.springframework.beans.factory.xml.XmlBeanFactory;  
  3. import org.springframework.core.io.ClassPathResource;  
  4. import org.springframework.core.io.Resource;  
  5.   
  6. /** 
  7.  *  
  8.  *@Copyright(C),2009-2010 SISE Java Team. 
  9.  *@Author:easinchu 
  10.  *@Email:[email protected]  
  11.  *@Description:採用Spring的BeanFactory構造IoC容器. 
  12.  */  
  13. public class FirstSpringDemo {  
  14.       
  15.     public static void main(String []args) {  
  16.         //-----------BeanFactory IoC容器---------------------//  
  17.         //從classpath路徑上裝載XML的配置信息  
  18.         Resource resource = new ClassPathResource("ioc-config.xml");  
  19.           
  20.         //實例化IOC容器,此時容器並未實例化beans-config.xml所定義的各個受管bean.  
  21.         BeanFactory factory = new XmlBeanFactory(resource);  
  22.           
  23.         /  
  24.           
  25.         //獲取受管bean  
  26.         HelloWorld hello = (HelloWorld)factory.getBean("helloWorldBean");  
  27.         hello.sayHello();  
  28.     }  
  29. }  

步驟小結
①利用XmlBeanFactory讀取xml配置文件並建立BeanFactory實例
②BeanFactory依據配置文件完成依賴注入
③通過getBean()方法指定Bean名稱取得Bean實例
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章