spring-framework源碼第2彈------Spring的整體架構(gòu)
Spring的整體架構(gòu)
Spring 框架是一個(gè)分層架構(gòu),它包括一系列的功能要素,并被分為大約20個(gè)模塊,如下圖所示:
Core Container(核心容器層)
Core Container 包含有Core、Beans、Context和Expression Language模塊。
Core和Beans模塊是框架的基礎(chǔ)部分,提供Ioc(控制反轉(zhuǎn))和依賴注入特性。
Core模塊主要包括Spring框架基本的核心工具類,Spring的其他組件都要用到這個(gè)包里的類
Beans 模塊是所有應(yīng)用都要用到的,它包含訪問配置文件、創(chuàng)建和管理Bean以及進(jìn)行IOC/DI 操作相關(guān)的所有類。
Context 模塊構(gòu)建與Core和Beans模塊基礎(chǔ)之上,提供了一種類似于JNDI注冊(cè)器的框架式的對(duì)象訪問方法。Context模塊繼承了Beans的特性。ApplicationContext接口是Context模塊的核心。
Expression Language 模塊提供了一個(gè)強(qiáng)大的表達(dá)式語言用于在運(yùn)行時(shí)查詢和操縱對(duì)象。它是JSP2.1規(guī)范中定義的unifed expression language的一個(gè)擴(kuò)展。該語言支持設(shè)置/獲取屬性的值,屬性的分配,方法的調(diào)用,訪問數(shù)組上下文、容器和索引器、邏輯和算術(shù)運(yùn)算符、命名變量以及從Spring的IOC容器根據(jù)名稱檢索對(duì)象。它也支持list投影、選擇和一般的list聚合。
Data Access/Integration(數(shù)據(jù)訪問層)
Data Access 層包含有JDBC、ORM、OXM、JMS和Transaction模塊。其中:
JDBC模塊提供了一個(gè)JDBC抽象層,它可以消除冗長(zhǎng)的JDBC編碼和解析數(shù)據(jù)庫(kù)廠商特有的錯(cuò)誤代碼。這個(gè)模塊包含了Spring對(duì)JDBC數(shù)據(jù)訪問進(jìn)行封裝的所有類。
ORM模塊為流行的對(duì)象-關(guān)系映射API,如JPA、Hibernate、MyBatis等,提供了一個(gè)交互層。利用ORM封裝包,可以混合使用所有Spring提供的特性進(jìn)行O/R映射。
Transacton 模塊支持編程和聲明性的事務(wù)管理,這些事務(wù)必須實(shí)現(xiàn)特定的接口,并且對(duì)所有的POJO都適用。
Web層
Web 上下文模塊建立咋應(yīng)用程序上下文模塊之上,為基于Web的應(yīng)用程序提供了上下文。所以Spring 框架支持與Struts2的集成。Web模塊還簡(jiǎn)化了處理多部分請(qǐng)求以及將請(qǐng)求參數(shù)綁定到對(duì)象的工作。Web層包含了Web、Web-Servelet、Web-Struts和Web-Porlet模塊。
Web 模塊:提供了基礎(chǔ)的面向Web的集成特性。例如,多文件上傳,使用servlet listeners初始化IoC容器以及一個(gè)面向Web的應(yīng)用上下文,它還包括Spring遠(yuǎn)程支持中Web的相關(guān)部分。
Web-Servlet模塊,該模塊包含Spring的model-view-controller(MVC)實(shí)現(xiàn)。Spring的MVC框架使得模型范圍內(nèi)的代碼和web forms之間能夠清楚地分離開來,并與Spring 框架的其他特性集成在一起。
Web-Porlet模塊:提供了用于Porlet 環(huán)境和Web-Servlet模塊的MVC的實(shí)現(xiàn)。
AOP
AOP模塊提供了一個(gè)符合AOP聯(lián)盟標(biāo)準(zhǔn)的面向切面編程的實(shí)現(xiàn)。它讓你可以定義例如方法攔截器和切點(diǎn)。從而將邏輯代碼分開,降低它們的耦合性。利用source-level的元數(shù)據(jù)功能,還可以將各種行為信息合并到你的代碼中。
作者:碼農(nóng)飛哥
微信公眾號(hào):碼農(nóng)飛哥