官术网_书友最值得收藏!

1.3 Spring架構圖

Spring的產生,主要是為了幫助用戶簡化開發流程,提高代碼生產效率。利用合理的配置文件,可實現程序的控制。同時,為了方便開發者編寫,又提供了方便的事務處理能力以及第三方框架整合能力。Spring的整體架構如圖1-6所示。

圖1-6 Spring整體架構

1.核心容器

核心容器(Core Container)包括Beans模塊、Core模塊、Context模塊和Expression Language模塊。

Beans模塊:提供框架的基礎部分,主要用于實現控制反轉(依賴注入)功能。其中,Bean Factory是容器的核心部分,其本質是工廠設計模式實現,提倡面向接口編程,對象間的關系由框架通過配置關系進行管理,所有的依賴都由Bean Factory來維護。

Core模塊:封裝了框架依賴的最底層部分,包括資源訪問、類型轉換和其他的常用工具類。

Context模塊:以Core和Bean模塊為基礎,集成Beans模塊功能并添加資源綁定、數據驗證、國際化、Java EE支持、容器生命周期等,核心接口是ApplicationContext。

Expression Language(EL)模塊:表達式語言支持,支持訪問和修改屬性值,方法調用,支持訪問及修改數組、容器和索引器、命名變量,支持算術和邏輯運算,支持從Spring容器獲取Bean,也支持列表透明、選擇和一般的列表聚合等。利用表達式語言,可以更加靈活地控制配置文件。

2.切面編程模塊

切面編程模塊包含AOP模塊、Aspects模塊和Instrumentation模塊。

AOP(Aspect Oriented Programming)模塊:符合AOP Alliance規范的面向切面編程實現,提供了如日志記錄、權限控制、性能統計等通用功能和業務邏輯分離技術,能動態地把這些功能添加到需要的代碼中,從而降低業務邏輯和通用模塊的耦合。

Aspects模塊:提供了AspectJ的集成,利用AspectJ表達式可以方便地實現切面管理。

Instrumentation模塊:是Java 5之后提供的特性。使用Instrumentation,開發者可以構建一個代理,用來監測運行在JVM上的程序。監測一般是通過在執行某個類文件之前,對該類文件的字節碼進行適當修改進行的。

3.數據訪問/集成模塊

數據訪問/集成(Data Access/Integration)模塊包含事務管理模塊、JDBC模塊、ORM模塊、OXM模塊和JMS模塊。

事務管理模塊:用于Spring事務管理操作,只要是Spring管理的對象,都可以利用此事務模塊進行控制。支持編程和聲明式兩類方式的事務管理。

JDBC模塊:提供了JDBC的操作模板,利用這些模板可以消除傳統冗長的JDBC編碼和必需的事務控制,同時可以使用Spring管理事務,無須額外控制事務。

ORM模塊:提供了實體層框架的無縫集成,包括Hibernate、JPA、MyBatis等,同時可以使用Spring實現事務管理,無須額外控制事務。

OXM模塊:提供了Object/XML映射,可以將Java對象映射成XML數據,或者將XML數據映射成Java對象。Object/XML映射實現包括JAXB、Castor、XMLBeans和XStream。

JMS模塊:用于JMS(Java Messaging Service)組件整合,提供了一套消息“生產者-消費者”處理模型。JMS可以用于在兩個應用程序之間或分布式系統中,實現消息處理與異步通信。

4.Web(MVC / Remoting)模塊

Web(MVC / Remoting)模塊包含Web模塊、Servlet模塊、MVC框架模塊和Porlet模塊。

Web模塊:提供了基礎Web功能,如多文件上傳、集成IoC容器、遠程過程訪問(RMI、Hessian、Burlap)以及Web Service支持,并提供了RestTemplate類來進行Restful Services訪問。

Servlet模塊:提供了Spring MVC Web框架實現。Spring MVC框架提供了基于注解的請求資源注入,可以更簡單地進行數據綁定、數據驗證和一套非常易用的JSP標簽,完全無縫地與其他Spring技術進行協作。

MVC框架模塊:提供了與常用MVC開發框架的整合,如Struts、JSF等。

Porlet模塊:Portal是一個基于Web的應用,它能提供個性化、單點登錄、不同源的內容聚合和信息系統的表示層集中。聚合是整合不同Web頁面源數據的過程。

5.Test模塊

支持JUnit和Test測試框架,而且額外提供了一些基于Spring的測試功能。例如,可在測試Web框架時模擬HTTP請求功能。或者啟動容器,實現依賴注入管理。

Spring本身提供了對象管理容器,由于Java EE項目都是構建在Web容器之上的,所以在實際開發過程中經常可看到如圖1-7所示的運行場景。

通過圖1-7可以發現,在Spring框架上進行項目構建過程之中,是以Spring的核心容器實現的基本結構,而后利用Spring中提供的系列整合技術根據自身項目的需求簡化ORMapping組件的開發,再利用AOP與AspectJ實現業務層事務控制,對于Web端可以與Struts、JSF等常用開發框架整合,也可以直接使用SpringMVC進行整合。

圖1-7 Spring實際運行場景

主站蜘蛛池模板: 南京市| 平泉县| 承德县| 台北市| 内丘县| 深泽县| 古蔺县| 阿克| 苗栗县| 郧西县| 浑源县| 青海省| 蓬莱市| 晋州市| 杭锦后旗| 岳普湖县| 肥城市| 信阳市| 施秉县| 扶风县| 长泰县| 文昌市| 磐石市| 崇明县| 金山区| 开化县| 清苑县| 灵山县| 桃江县| 鲁山县| 赣州市| 汶上县| 焉耆| 都昌县| 昆山市| 江孜县| 武威市| 石狮市| 郁南县| 陆川县| 马边|