第一章:Spring 整體架構和環境搭建--1.1整體架構

          Spring 表示是一個開源框架,是爲了解決企業應用程序開發複雜性由Rod Johnson創建的。框架的主要優勢之一就是其分層架構,分層架構允許使用者選擇使用哪一個組件,同時爲 J2EE 應用程序開發提供集成的框架。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限於服務器端的開發。從簡單性、可測試性和鬆耦合的角度而言,任何Java應用都可以從Spring中受益。
    Spring是一個開源框架,Spring是於2003 年興起的一個輕量級的Java 開發框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中闡述的部分理念和原型衍生而來。它是爲了解決企業應用開發的複雜性而創建的。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限於服務器端的開發。從簡單性、可測試性和鬆耦合的角度而言,任何Java應用都可以從Spring中受益。簡單來說,Spring是一個輕量級的控制反轉(IoC)和麪向切面(AOP)的容器框架。

   它爲企業應用的開發提供一個輕量級的解決方案,該解決方案的包括:基於依賴注入的核心機制,基於AOP 的聲明式事務管理,與多種持久層技術的無縫整合,以及優秀的Web MVC 框架等,Sping致力於Java EE 應用各層的解決方案,而不僅僅關注於某一層的方案,Spring 貫穿於表現層、業務層、持久層。然而Spring 並非是其他的框架的取代品,而是以高度的開發性與它們無縫整合。


       1.1 Spring 的整體架構

              

1.SpringloC:包含了最爲基本的IoC容器BeanFactory的接口與實現,也就是說,在這個Spring的核心包中,不僅定義了IoC容器的最基本接口(BeanFactory),也提供了一系列這個接口的實現,如XmlBeanFactory就是一個最基本的BeanFactory (IoC容器),從名字上可以看到,它能夠支持通過XML文件配置的Bean定義信息。除此之外,SpringIoC容器還提供了一個容器系列,如SimpleJndiBeanFactory、 StaticLismbleBeanFactor等。我們知道,單純一個IoC容器對於應用開發來說是不夠的.爲了讓應用更方便地使用IoC容器 ,還需要在IoC容器的外圍提供其他的支持 ,這些支持包括Resource訪問資源的抽象和定位等 ,所有的這些 ,都是這個Spring IoC模塊的基本內容。另外,在BeanFactory接口實現中,除了前面介紹的像BeanFactory那樣最爲基本的容器形態之夕外,Spring還設計了IoC容器的髙級形態ApplicaticmContext應用上下文供用戶使用,這些ApplicationConlext應用上下文 ,如FileSystemXmlApplicationContext,ClassPathXmlAppIicationContext,對應用來說, 是IoC容器中更面向框架的使用方式,同樣,爲了便於應用開發,像國際化的消息源和應用支持事件這些特性,也都在這個
模塊中配合IoC容器來實現,這些功能圍繞着IoC基本容器和應用上下文的實現,構成了整個Spring IoC模塊設計的主要內容。

2.SpringAOP這也是Spring的核心模塊, 圍繞着AOP的增強功能,Spring集成了AspectJ作爲AOP的一個特定實現,同時還在JVM動態代理/CGLIB的基礎上, 實現了—個AOP框架 ,作爲Spring集成其他模塊的工具,如TransactionProxyFactoryBean
聲明式事務處理,就是通過AOP集成到Spring中的。在這個模塊中,Spring AOP實現了一個完整的建立AOP代理對象,實現AOP攔截器,直至實現各種Advice通知的過程。在對這個模塊的分析中可以看到,AOP模塊的完整實現是我們熟悉AOP實現技術的一
個不可多得的樣本。

3.Spring MVC:對於大多數企業應用而言, Web應用已經是一種普遍的軟件發佈方式,而在Web應用的設計中, MVC模式已經被廣泛使用了。 在java社區中,也有很多類似的MVC框架可以選擇而且這些框架往往和WebUI計整合在一起對於定位於提供整體平臺解決方案的Spring,樣的整合也是不可缺少的。Spring MVC模塊DispatcherServlet爲核心實現了MVC模式,包括怎樣與Web容器環境的集成,Web請求的攔裁.分發、處理和ModelAndView數據的返回,以及如何集成各種UI視圖展現和數據表現,如PDF,Excel, 通過這個模塊,可以完成Web的前端設計。

4.Spring JDBC/SpringORM:對於關係數據庫的處理, Java提供了JDBC來進行操作,但在實際的應用中,單純使用JDBC的方式還是有些繁瑣, 所以在JDBC規範的基礎上,Spring對JDBC做了一層封裝,使通過JDBC完成的對數據庫的操作更加簡潔, SpringJDBC包提供了JdbcTemplale作爲模板類 ,封裝了基本的數據庫操作方法,如數據的査詢、更新等,另外, SpringJDBC還提供了RDBMS的操作對象,這些操作對象可以使應用以更面向對象的方法來使用JDBC, 比如可以使用MappingSqlQuery將數據庫數據記錄直接映射到對象集合,類似個極爲簡單的ORM 工具。
除了通過SpringJDBC對數據庫進行操作外,Spring還提供了許多對ORM工具的封裝, 這些封裝包括了常用的ORM工具,如Hibernate iBatis等,這一層封裝的作用是讓應用更方便地使用這些ORM 工具,而不是替代這些ORM工具,比如可以把對這些工具的使用和Spring提供的聲明式事務處理結合起來。同時, Spring還提供了許多模板對象,如HibernateTemaplate這樣的工具來實現對Hibernate的驅動,這些模板對象往往包裝使用Hibernate的一些通用過程,比如Session的獲取和關閉、事務處理的關聯等,從而把一些通用的恃性實現抽象到Spring中來,更充分地體現了Spring的平臺作用。

5.Spring事務處理:Spring事務處理是一個通過Spring AOP實現自身功能增強的典型模塊。在這個模塊中, Spring把在企業應用開發中事務處理的主要過程抽象出來。這個聲明式事務處理的實現,使開發人員只需要在IoC容器中對事務屬性進行配置即可完成,同時, 這些事務處理的基本過程和具體的事務處理器實現是無關的,也就是說,應用可以選擇不同的具體的事務處理機制,如JTA,JDBC, Hibernate等。 因爲使用了聲明式事務處理.具體的事務處理機制被納入Spring事務處理的統一框架中完成 , 並完成與具體業務代碼的解耦。 在這個模塊中,可以看到一個通用的實現聲明式事務處理的基本過程,比如怎樣配置事務處理的攔截器,怎樣讀人事務配置屬性, 並結合這些事務配置屬性對事務對象進行處理,包栝事務的創建、掛起、提交、回滾等基本過程, 還可以看到具體的事務處理器(DataSourceTransactionManage
HibernateTransactionManagerJtaTransactionManager等) 是怎樣封裝不同的事務處理機制(JDBC、 Hibernate, JTA等) 的。

6.Spring遠端調用:Spring爲應用帶來的一個好處就是能夠將應用解耦。應用解耦,一方面可以降低設計的複雜性,一方面,可以在解耦以後將應用模塊分佈式地部署,從而提髙系統整體的性能。 在後一種應用場景下, 會用到Spring的遠端調用, 這種遠
端調用是通過Spring的封裝從Spring應用到Spring應用之間的端到端調用,在這個過程中,通過Spring的封裝, 爲應用屏蔽了各種通信和調用細節的實現
,同時. 通過這一層的封裝 ,使應用可以通過選擇各種不同的遠端調用來實現, 比如可以使用HTTP
調用器(以HTTP協議爲基礎的), 可以使用第三方的二進制通信實現Hessian/Burlap甚至還封裝了傳統Java技術中的RMI調用。

7.Spring應用。

小結:在我們平時的開發中,用到最多的場景就是使用SSH框架來完成企業應用的開發,取代傳統的EJB笨重的開發模式。在SSH架構中 Struts作爲Web UI層、 Spring作爲中間件平臺, Hibernate作爲數據持久化工具(ORM工具) 來操作關係數據庫。在這個架構中, Hibernate是一個獨立的ORM數據持久化產品。比較Spring JDBC和Hibernae對數據庫操作的支持,對Spring來說,其對數據持
久化的支持,雖然也有JDBC的封裝,可以完成一些將簡單的數據記錄到Java數據對象的轉換和映射工作,但和Hibernate相比, 功能上畢競還是有一些單薄,比如Hibernate還提供了各種數據的査詢、方便的對象和關係數據的映射等。因此,在大多數應用中,將Hibernate和Spring—起使用是非常普遍的,因爲一方面Hibenate提供了完整的和已經成爲事實標準的功能,另一方面, Spring也提供了與Hibernated的集成和封裝,包括聲明式事務處理的封裝等。對於Web 層而言,儘管Spring提供了自己的MVC實現,但與Struts的流行程度相比,這個Spring MVC的使用並不廣泛, 畢竟在Web開發領域, Struts成名更早在這個架構組合中,Spring起到的是一個應用平臺的作用,通過Spring的集成,可以讓應用在直接部署在Tomcat這個Web服務器上 ,因爲作爲一個直接依賴JVM的輕量級框架, Spring的部署方式就是一個簡單的jar包, 不需要以一個J2EE應用服務器的形式出現,從而使整個應用在Tomcat這樣的Web服務器上直接運行起來,非常簡潔。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章