第2篇:Spring 體系結(jié)構(gòu)

一爪模、體系結(jié)構(gòu)

Spring 有可能成為所有企業(yè)應(yīng)用程序的一站式服務(wù)點沃琅,然而,Spring 是模塊化的究抓,允許你挑選和選擇適用于你的模塊猾担,不必要把剩余部分也引入。下面的部分對在 Spring 框架中所有可用的模塊給出了詳細的介紹刺下。

Spring 框架提供約 20 個模塊绑嘹,可以根據(jù)應(yīng)用程序的要求來使用。

二怠李、核心容器

核心容器由spring-core圾叼,spring-beans蛤克,spring-context捺癞,spring-context-support和spring-expression(SpEL,Spring表達式語言构挤,Spring Expression Language)等模塊組成髓介,它們的細節(jié)如下:

spring-core模塊提供了框架的基本組成部分,包括 IoC 和依賴注入功能筋现。

spring-beans模塊提供 BeanFactory唐础,工廠模式的微妙實現(xiàn),它移除了編碼式單例的需要矾飞,并且可以把配置和依賴從實際編碼邏輯中解耦一膨。

context模塊建立在由corebeans模塊的基礎(chǔ)上建立起來的,它以一種類似于JNDI注冊的方式訪問對象洒沦。Context模塊繼承自Bean模塊豹绪,并且添加了國際化(比如,使用資源束)申眼、事件傳播瞒津、資源加載和透明地創(chuàng)建上下文(比如蝉衣,通過Servelet容器)等功能。Context模塊也支持Java EE的功能巷蚪,比如EJB病毡、JMX和遠程調(diào)用等。ApplicationContext接口是Context模塊的焦點屁柏。spring-context-support提供了對第三方庫集成到Spring上下文的支持啦膜,比如緩存(EhCache, Guava, JCache)、郵件(JavaMail)淌喻、調(diào)度(CommonJ, Quartz)功戚、模板引擎(FreeMarker, JasperReports, Velocity)等。

spring-expression模塊提供了強大的表達式語言似嗤,用于在運行時查詢和操作對象圖啸臀。它是JSP2.1規(guī)范中定義的統(tǒng)一表達式語言的擴展,支持set和get屬性值烁落、屬性賦值乘粒、方法調(diào)用、訪問數(shù)組集合及索引的內(nèi)容伤塌、邏輯算術(shù)運算灯萍、命名變量、通過名字從Spring IoC容器檢索對象旦棉,還支持列表的投影、選擇以及聚合等药薯。

它們的完整依賴關(guān)系如下圖所示:

三绑洛、數(shù)據(jù)訪問/集成

數(shù)據(jù)訪問/集成層包括 JDBC童本,ORM真屯,OXM,JMS 和事務(wù)處理模塊配深,它們的細節(jié)如下:

(注:JDBC=Java Data Base Connectivity篓叶,ORM=Object Relational Mapping向叉,OXM=Object XML Mapping母谎,JMS=Java Message Service)

JDBC?模塊提供了JDBC抽象層咬扇,它消除了冗長的JDBC編碼和對數(shù)據(jù)庫供應(yīng)商特定錯誤代碼的解析梭灿。

ORM?模塊提供了對流行的對象關(guān)系映射API的集成,包括JPA溉卓、JDO和Hibernate等皮迟。通過此模塊可以讓這些ORM框架和spring的其它功能整合,比如前面提及的事務(wù)管理桑寨。

OXM?模塊提供了對OXM實現(xiàn)的支持伏尼,比如JAXB、Castor西疤、XML?Beans烦粒、JiBX、XStream等代赁。

JMS?模塊包含生產(chǎn)(produce)和消費(consume)消息的功能。從Spring?4.1開始兽掰,集成了spring-messaging模塊芭碍。。

事務(wù)模塊為實現(xiàn)特殊接口類及所有的 POJO 支持編程式和聲明式事務(wù)管理孽尽。(注:編程式事務(wù)需要自己寫beginTransaction()窖壕、commit()、rollback()等事務(wù)管理方法,聲明式事務(wù)是通過注解或配置由spring自動處理瞻讽,編程式事務(wù)粒度更細)

四鸳吸、Web

Web 層由 Web,Web-MVC速勇,Web-Socket 和 Web-Portlet 組成晌砾,它們的細節(jié)如下:

Web?模塊提供面向web的基本功能和面向web的應(yīng)用上下文,比如多部分(multipart)文件上傳功能烦磁、使用Servlet監(jiān)聽器初始化IoC容器等养匈。它還包括HTTP客戶端以及Spring遠程調(diào)用中與web相關(guān)的部分。都伪。

Web-MVC?模塊為web應(yīng)用提供了模型視圖控制(MVC)和REST?Web服務(wù)的實現(xiàn)呕乎。Spring的MVC框架可以使領(lǐng)域模型代碼和web表單完全地分離,且可以與Spring框架的其它所有功能進行集成陨晶。

Web-Socket?模塊為 WebSocket-based 提供了支持猬仁,而且在 web 應(yīng)用程序中提供了客戶端和服務(wù)器端之間通信的兩種方式。

Web-Portlet?模塊提供了用于Portlet環(huán)境的MVC實現(xiàn)先誉,并反映了spring-webmvc模塊的功能逐虚。

五、其他

還有其他一些重要的模塊谆膳,像?AOP叭爱,Aspects,Instrumentation漱病,Web 和測試模塊买雾,它們的細節(jié)如下:

AOP?模塊提供了面向方面的編程實現(xiàn),允許你定義方法攔截器和切入點對代碼進行干凈地解耦杨帽,從而使實現(xiàn)功能的代碼徹底的解耦出來漓穿。使用源碼級的元數(shù)據(jù),可以用類似于.Net屬性的方式合并行為信息到代碼中注盈。

Aspects?模塊提供了與?AspectJ?的集成晃危,這是一個功能強大且成熟的面向切面編程(AOP)框架。

Instrumentation?模塊在一定的應(yīng)用服務(wù)器中提供了類 instrumentation 的支持和類加載器的實現(xiàn)老客。

Messaging?模塊為 STOMP 提供了支持作為在應(yīng)用程序中 WebSocket 子協(xié)議的使用僚饭。它也支持一個注解編程模型,它是為了選路和處理來自 WebSocket 客戶端的 STOMP 信息胧砰。

測試模塊支持對具有 JUnit 或 TestNG 框架的 Spring 組件的測試鳍鸵。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市尉间,隨后出現(xiàn)的幾起案子偿乖,更是在濱河造成了極大的恐慌击罪,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贪薪,死亡現(xiàn)場離奇詭異媳禁,居然都是意外死亡,警方通過查閱死者的電腦和手機画切,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進店門竣稽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人槽唾,你說我怎么就攤上這事丧枪。” “怎么了庞萍?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵拧烦,是天一觀的道長。 經(jīng)常有香客問我钝计,道長恋博,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任私恬,我火速辦了婚禮债沮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘本鸣。我一直安慰自己疫衩,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布荣德。 她就那樣靜靜地躺著闷煤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪涮瞻。 梳的紋絲不亂的頭發(fā)上鲤拿,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天,我揣著相機與錄音署咽,去河邊找鬼近顷。 笑死,一個胖子當(dāng)著我的面吹牛宁否,可吹牛的內(nèi)容都是我干的窒升。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼家淤,長吁一口氣:“原來是場噩夢啊……” “哼异剥!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起絮重,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤冤寿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后青伤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體督怜,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年狠角,在試婚紗的時候發(fā)現(xiàn)自己被綠了号杠。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡丰歌,死狀恐怖姨蟋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情立帖,我是刑警寧澤眼溶,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站晓勇,受9級特大地震影響堂飞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜绑咱,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一绰筛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧描融,春花似錦铝噩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至让歼,卻和暖如春敞恋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背谋右。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工硬猫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人改执。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓啸蜜,卻偏偏與公主長得像,于是被迫代替她去往敵國和親辈挂。 傳聞我的和親對象是個殘疾皇子衬横,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,955評論 2 355