Spring3開發實戰 之 第一章:Spring入門 – JAVA編程語言程序開發技術文章

認識Spring
Spring是什麼
Spring是一種輕量級的、非侵入式的Java/JavaEE應用框架   
Spring背景
Rod Johnson
《Expert One-on-One J2EE Design and Development》(2002)這本書的中文譯本為《J2EE 設計開發編程指南》(2003)
半年後,一個新的Java Framework發佈,同樣出自Rod Johnson 的手筆,這自然引起瞭大傢極大的興趣,這就是SpringFramework。SpringFramework 實際上是《Expert One-on-One J2EE Design and Development》 一書中所闡述的設計思想的具體實現。
 
 《Expert One-on-One J2EE Development without EJB》 (2004)
nSpring目標
讓J2EE開發變的簡單、易用     (框架的好處)
業務應用“不”依靠 Spring API (非侵入性)
集成已存在的成熟應用解決方案 (如Hibernate,不重復發明輪子)
利用面向對象的優秀技術       (面向接口而非實現編程,組合優於繼承)
促進好的編程習慣             (測試驅動開發,測試簡單,面向接口編程)
讓測試業務應用變得簡單、快速 (無侵入性,測試容易)
Spring優點
有效地組織你的中間層對象
消除各式各樣的配置文件
將面對接口編程做到實處
自由、不依賴框架
將單元測試變的簡單
統一的數據存儲方式
隻選擇你需要的
Spring能幹什麼
Spring能幹什麼
籠統說:Spring能作為一個超級的”粘合”平臺,把很多的技術有效整合到一
起,形成一個整體,以更好的解決問題,並使系統結構更優良、性能更出眾。
(體現體系結構設計的:組件式、裝配式、插拔式、復用性、無侵入式等)
具體點說,Spring能幹的事情很多,最基本的有以下幾條:
1:IoC/DI
2:AOP
3:對JDBC和ORM的支持
4:服務(典型如:事務)
5:各種技術的整合(典型如:Struts2+Spring3+Hibernate3整合,還有很多其他的技術整合,如EJB、JMS等)
6:Web應用框架(SpringMVC)
7:更多技術,如:Spring的Security、Spring的Web Flow、Spring的WebService等等
 
Spring有什麼


上圖是Spring框架2.5版時官方給出的概述圖
Core包
Core封裝包是框架的最基礎部分,提供IoC和依賴註入特性。這裡的基礎概念是BeanFactory,它提供對Factory模式的經典實現來消除對程序性單例模式的需要,並真正地允許你從程序邏輯中分離出依賴關系和配置。
構建於Core封裝包基礎上的 Context封裝包,提供瞭一種框架式的對象訪問方法,有些象JNDI註冊器。Context封裝包的特性得自於Beans封裝包,並添加瞭對國際化(I18N)的支持(例如資源綁定),事件傳播,資源裝載的方式和Context的透明創建,比如說通過Servlet容器。
DAO包
DAO提供瞭JDBC的抽象層,它可消除冗長的JDBC編碼和解析數據庫廠商特有的錯誤代碼。還提供瞭一種比編程性更好的聲明性 事務管理方法,不僅僅是實現瞭特定接口,而且對所有的POJOs(plain old Java objects)都適用。
ORM包
ORM 封裝包提供瞭常用的“對象/關系”映射APIs的集成層。 其中包括JPA、JDO、Hibernate 和 iBatis 。利用ORM封裝包,可以混合使用所有Spring提供的特性進行“對象/關系”映射,如前邊提到的簡單聲明性 事務管理。
AOP包
Spring的 AOP 封裝包提供瞭符合 AOP 聯盟規范的面向方面的編程實現,讓你可以定義如方法攔截器和切入點,從邏輯上講,可以減弱代碼的功能耦合,清晰的被分離開。而且,利用源碼級的元數據功能,還可以將各種行為信息合並到你的代碼中 。
Web包
Spring中的Web包提供瞭基礎的針對Web開發的集成特性,例如多方文件上傳,利用Servlet listeners進行IoC容器初始化和針對Web的application context。這個包使Spring可與其他框架結合。
MVC包
Spring中的 MVC 封裝包提供瞭Web應用的MVC實現。Spring的MVC框架並不是僅僅提供一種傳統的實現,它提供瞭一種清晰的分離模型,在領域模型代碼和web form之間。並且,還可以借助Spring框架的其他特性。

Spring3總共包含瞭大約20個模塊,這些模塊又被組織成為:
核心容器部分、數據訪問/集成部分、Web部分、AOP部分和測試支持幾個部分。
核心容器部分(Core Container)又包含如下部分
1:Core和Beans模塊提供瞭Spring最基礎的功能,提供IoC和依賴註入特性。這裡的基礎概念是BeanFactory,它提供對Factory模式的經典實現來消除對程序性單例模式的需要,並真正地允許你從程序邏輯中分離出依賴關系和配置。
2:Context模塊基於Core和Beans來構建,它提供瞭用一種框架風格的方式來訪問對象,有些像JNDI註冊表。Context封裝包繼承瞭beans包的功能,還增加瞭國際化(I18N),事件傳播,資源裝載,以及透明創建上下文,例如通過servlet容器,以及對大量JavaEE特性的支持,如EJB、JMX。核心接口是ApplicationContext。
3:Expression Language,表達式語言模塊,提供瞭在運行期間查詢和操作對象圖的強大能力。支持訪問和修改屬性值,方法調用,支持訪問及修改數組、容器和索引器,命名變量,支持算數和邏輯運算,支持從Spring 容器獲取Bean,它也支持列表投影、選擇和一般的列表聚合等。
數據訪問/集成部分(Data Access/Integration)又包含如下部分
1:JDBC模塊,提供對JDBC的抽象,它可消除冗長的JDBC編碼和解析數據庫廠商特有的錯誤代碼。
2:ORM模塊,提供瞭常用的“對象/關系”映射APIs的集成層。 其中包括JPA、JDO、Hibernate 和 iBatis 。利用ORM封裝包,可以混合使用所有Spring提供的特性進行“對象/關系”映射,如簡單聲明性 事務管理 。
3:OXM模塊,提供一個支持Object和XML進行映射的抽象層,其中包括JAXB、Castor、XMLBeans、JiBX和XStream。
4:JMS模塊,提供一套“消息生產者、消費者”模板用於更加簡單的使用JMS,JMS用於用於在兩個應用程序之間,或分佈式系統中發送消息,進行異步通信。
5:Transaction模塊,支持程序通過簡單聲明性 事務管理,隻要是Spring管理對象都能得到Spring管理事務的好處,即使是POJO,也可以為他們提供事務。
Web部分又包含如下部分
1:Web模塊,提供瞭基礎的web功能。例如多文件上傳、集成IoC容器、遠程過程訪問、以及Web Service支持,並提供一個RestTemplate類來提供方便的Restful services訪問
2:Web-Servlet模塊,提供瞭Web應用的Model-View-Controller(MVC)實現。Spring MVC框架提供瞭基於註解的請求資源註入、更簡單的數據綁定、數據驗證等及一套非常易用的JSP標簽,完全無縫與Spring其他技術協作。
3:Web-Struts模塊, 提供瞭對Struts集成的支持,這個功能在Spring3.0裡面已經不推薦瞭,建議你遷移應用到使用Struts2.0或Spring的MVC。
4:Web-Portlet模塊,提供瞭在Portlet環境下的MVC實現
 
AOP部分又包含如下部分
1:AOP模塊,提供瞭符合AOP 聯盟規范的面向方面的編程實現,讓你可以定義如方法攔截器和切入點,從邏輯上講,可以減弱代碼的功能耦合,清晰的被分離開。而且,利用源碼級的元數據功能,還可以將各種行為信息合並到你的代碼中 。
2:Aspects模塊,提供瞭對AspectJ的集成。
3:Instrumentation模塊, 提供一些類級的工具支持和ClassLoader級的實現,可以在一些特定的應用服務器中使用
 
Test部分又包含如下部分
1:Test模塊,提供對使用JUnit和TestNG來測試Spring組件的支持,它提供一致的ApplicationContexts並緩存這些上下文,它還能提供一些mock對象,使得你可以獨立的測試代碼。


作者:jinnianshilongnian

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *