Spring體系結(jié)構(gòu)詳解
Spring?框架采用分層架構(gòu),根據(jù)不同的功能被劃分成了多個(gè)模塊,這些模塊大體可分為 Data Access/Integration、Web、AOP、Aspects、Messaging、Instrumentation、Core Container 和 Test,如圖 1 所示。
圖 1 Spring的體系結(jié)構(gòu)
圖 1 中包含了 Spring 框架的所有模塊,這些模塊可以滿足一切企業(yè)級(jí)應(yīng)用開發(fā)的需求,在開發(fā)過程中可以根據(jù)需求有選擇性地使用所需要的模塊。下面分別對這些模塊的作用進(jìn)行簡單介紹。
1. Data Access/Integration(數(shù)據(jù)訪問/集成)
數(shù)據(jù)訪問/集成層包括 JDBC、ORM、OXM、JMS 和 Transactions 模塊,具體介紹如下。
JDBC 模塊:提供了一個(gè) JDBC 的抽象層,大幅度減少了在開發(fā)過程中對數(shù)據(jù)庫操作的編碼。
ORM 模塊:對流行的對象關(guān)系映射 API,包括 JPA、JDO、Hibernate?和 iBatis 提供了的集成層。
OXM 模塊:提供了一個(gè)支持對象/XML 映射的抽象層實(shí)現(xiàn),如 JAXB、Castor、XMLBeans、JiBX 和 XStream。
JMS 模塊:指?Java?消息服務(wù),包含的功能為生產(chǎn)和消費(fèi)的信息。
Transactions 事務(wù)模塊:支持編程和聲明式事務(wù)管理實(shí)現(xiàn)特殊接口類,并為所有的 POJO。
2. Web 模塊
Spring 的 Web 層包括 Web、Servlet、Struts 和 Portlet 組件,具體介紹如下。
Web 模塊:提供了基本的 Web 開發(fā)集成特性,例如多文件上傳功能、使用的 Servlet 監(jiān)聽器的 IoC 容器初始化以及 Web 應(yīng)用上下文。
Servlet模塊:包括 Spring 模型—視圖—控制器(MVC)實(shí)現(xiàn) Web 應(yīng)用程序。
Struts 模塊:包含支持類內(nèi)的 Spring 應(yīng)用程序,集成了經(jīng)典的 Struts Web 層。
Portlet 模塊:提供了在 Portlet 環(huán)境中使用 MV C實(shí)現(xiàn),類似 Web-Servlet 模塊的功能。
3. Core Container(核心容器)
Spring 的核心容器是其他模塊建立的基礎(chǔ),由 Beans 模塊、Core 核心模塊、Context 上下文模塊和 Expression Language 表達(dá)式語言模塊組成,具體介紹如下。
Beans 模塊:提供了 BeanFactory,是工廠模式的經(jīng)典實(shí)現(xiàn),Spring 將管理對象稱為 Bean。
Core 核心模塊:提供了 Spring 框架的基本組成部分,包括 IoC 和 DI 功能。
Context 上下文模塊:建立在核心和 Beans 模塊的基礎(chǔ)之上,它是訪問定義和配置任何對象的媒介。ApplicationContext 接口是上下文模塊的焦點(diǎn)。
Expression Language 模塊:是運(yùn)行時(shí)查詢和操作對象圖的強(qiáng)大的表達(dá)式語言。
4. 其他模塊
Spring的其他模塊還有 AOP、Aspects、Instrumentation 以及 Test 模塊,具體介紹如下。
AOP 模塊:提供了面向切面編程實(shí)現(xiàn),允許定義方法攔截器和切入點(diǎn),將代碼按照功能進(jìn)行分離,以降低耦合性。
Aspects 模塊:提供與 AspectJ 的集成,是一個(gè)功能強(qiáng)大且成熟的面向切面編程(AOP)框架。
Instrumentation 模塊:提供了類工具的支持和類加載器的實(shí)現(xiàn),可以在特定的應(yīng)用服務(wù)器中使用。
Test 模塊:支持 Spring 組件,使用 JUnit 或 TestNG 框架的測試。