就是愛分享
Spring最初是Rod Johnson在2002年由其著作Expert One-on-One: J2EE Design and Development中提出的,另外一本書Expert One-on-One J2EE Development without EJB更進一步闡述了在不使用EJB(Enterprise JavaBean)開發J2EE企業級應用的一些設計思想和具體的作法(題外話:EJB是sun的伺服器端元件Model,最大的用處是部署分散式應用程式,類似微軟的.com技術。Sun在2006年5月2日發布了JSR 220定義,也就是EJB3.0,企圖減輕EJB以往開發過於複雜以及不必要的負擔。參見-伺服器端元件Model-EJB3.0(Enterprise JavaBean 3.0)論述)。

Spring在2004年初發佈1.0版本,到2006年10月3日發佈了2.0版本,基本上維持著每半年就會有一次大的更新,可到http://www.springsource.org/下載最新版本的Spring。

Spring是一個應用於J2EE領域的輕量應用程式框架,其核心是一個IoC(Inversion of Control)以及AOP(Aspect-oriented programming)。在核心上面的一個主要部份是資料存取DAO框架,包括一個自己的JDBC資料存取封裝以及對眾多ORM框架的工具集支持。Spring內置了一個功能強大、靈活的Web MVC框架Spring MVC框架,以提供快速的Java Web應用程式開發,在程式開發中,程式開發者可以直接使用Spring框架內建的Spring MVC框架。除此之外,對於現在比較流行的各種層面上的框架(如Hibernate、JSF、Struts等),Spring也提供了與它們相互整合的方案。

Spring框架系統架構如圖,從圖中看出Spring提供了很多J2EE應用的基礎設施及解決方案,便於開發J2EE應用。



其中Core是框架的最基礎部分,提供IoC(Inversion of Control,控制反轉)和DI(Dependency Injection,依賴注入)特性。所謂的控制反轉是指控制權由程式改到Spring Container(容器),控制權的移轉,是所謂的反轉;或可說是依賴注入,將原先程式間的耦合降到最低,改由Spring容器注入程式間的關連。使用IoC通常會使得程式碼非常清晰,更為重要的是,IoC可以使得程式碼之間、類別與類別之間有很好的解耦性。DI有三種形式:Setter-based、Constructor-based、Getter-based,Spring推薦使用第一種方式,Setter-based類似典型的JavaBean,帶有一個無參數的構造函數和setter方法。

BeanFactor代表了Spring的心臟,可以配置和管理幾乎所有的Java類別,在存取和操作IoC的初期充當了IoC容器的作用。然而在大多數的情況之下,不會直接使用BeanFactor而是使用ApplicationContext,因為ApplicationContext具有更多的企業級特性如多國語言支援、資源存取、事件傳播和多實例載入等等。

Bean在Spring容器中大致要經歷以下四個階段:Bean定義、初始化、準備狀態以及銷毀。

Spring的AOP是OOP(物件導向程式設計)的延續,提供了符合AOP Alliance規範的層面導向程式設計(Aspect-Oriented Programming)的具體實現,讓使用者可以定義,像方法攔截器(method-interceptors)和切入點(PointCuts),從軟體設計上看,通過這樣的方式可以降低耦合性(coupling),提高內聚性(cohesion),從而在軟體結構上得到改善。

DAO模式是一種資料存取物件模式,它通過抽象方法來提供資料存取的介面,這樣便消除了冗長乏味的JDBC編碼,並且通過這樣的封裝方式更容易為程式設計提供介面,而且對所有的POJO適用。

ORM封裝提供了物件關係對應的API介面,使用ORM工具集的產品除了提到過的Hibernate,還包括了如JDO等產品。
<未完 待補充更新>
標籤: | edit post
0 Responses