Spring技術(shù)體系之源起之戰(zhàn)

我從2016年4月部翘,開始從C++陣營轉(zhuǎn)向java响委,一開始覺得很自然,并沒有什么坎夹囚。后面隨著慢慢地深入學(xué)習(xí)邀窃,越發(fā)發(fā)現(xiàn)java的體系龐大。真所謂是:

萬事開頭易
然后中間難
最后結(jié)尾更難

目前所有做java項目敲茄,幾乎都必須用到spring技術(shù)框架山析,對spring框架的了解對自己的技術(shù)提升、找工作秆剪、或者是長期的職業(yè)發(fā)展道路都至關(guān)重要爵政。確定了這一點后,我開始查找spring相關(guān)的書籍洁灵,最終找到評價還不錯的王福強的《spring揭秘》掺出,然后開始自己的spring之旅。

0x01 Spring誕生背景

早期的J2EE平臺推出的EJB規(guī)范双抽,是為了解決CORBA等分布式架構(gòu)的不足闲礼。但隨著時間推移和技術(shù)發(fā)展,EJB也逐漸暴露各種形式的不足慎菲,無論是性能聂抢,還是使用上的晦澀難懂,還是笨重的框架體系有决,都讓EJB的使用者感到失望空盼。EJB就像是重裝騎兵,代價高昂台汇,自身兵種限制太多,發(fā)揮作用的場景有限苟呐。

于是牵素,一場技術(shù)革命在所難免,而燃氣這場革命的星星之火笆呆,就是Spring赠幕。Spring倡導(dǎo)一切從實際出發(fā),以實用的態(tài)度來選擇適合當(dāng)前開發(fā)場景的解決方案榕堰。

Spring 在起源可以回溯到 Rod Johnson 編寫的“ Expert One-to-One J2EE Design and Development ”一書 (Wrox 局冰, 2002) 。在這本書中碳胳, Rod 展示了他的 interface21 框架沫勿,他為自己的應(yīng)用編寫了這一框架。這一框架被發(fā)布到開源世界后诫惭,組成了現(xiàn)在我們所知的 Spring 框架的基礎(chǔ)蔓挖。 Spring 在早期的 beta 和發(fā)布備選版本階段進行得很迅速,第一個正式版本 1.0 在 2004 年 3 月 24 日 發(fā)布怨绣。從開始到現(xiàn)在拷获,歷經(jīng)16年的演變,目前已經(jīng)去到Spring 5了赢笨。
官網(wǎng):http://www.springframework.org

技術(shù)是發(fā)展的,但思想是延續(xù)的萧吠,當(dāng)我們借助Spring之船飛渡波瀾不驚的水面亦或闖過驚濤駭浪嘶伟,不要忘記,或許某天我們會踏上另一條更好的船舶,但Spring之船帶給我們的思想铸鹰,卻始終陪伴著我們皂岔,激勵也好,鞭策也善......

0x02 Spring框架概述

Spring框架所倡導(dǎo)的基于POJO(Plain Old Java Object剖毯,簡單Java對象)的輕量級開發(fā)理念教馆,就是從實際出發(fā),立足于最基礎(chǔ)的POJO胶滋。我們把POJO對象類比為人類或者是在地球生態(tài)生存的動植物悲敷,Spring框架就好像那包裹地球的大氣層一樣,為構(gòu)筑應(yīng)用的POJO提供了各種服務(wù)部宿,進而創(chuàng)造了一套適宜用POJO進行輕量級開發(fā)的環(huán)境瓢湃。

Spring框架為POJO提供的各種服務(wù)共同組成了Spring的生命之樹箱季,如圖所示。

Spring的生命之樹

組成整個Spring框架的各種服務(wù)實現(xiàn)被劃分到了多個相互獨立卻又相互依賴的模塊當(dāng)中,這些模塊組成了Spring生命之樹的枝和干,說白了也就是它們組成了Spring框架的核心骨架藕坯。抓住了這副骨架苔悦,也就抓住了Spring框架的學(xué)習(xí)主線仑鸥。

我們把Spring的生命之樹理一下,分為一個主樹干和三個分支

主樹干:

整個Spring框架構(gòu)建在Core核心模塊之上揽咕,它是整個框架的基礎(chǔ)。在該模塊中设易,Spring為我們提供了一個IoC容器(IoC Container)實現(xiàn)蛹头,用于幫助我們以依賴注入的方式管理對象之間的依賴關(guān)系渣蜗。對Spring的IoC容器的介紹將成為我們此次Spring之旅的第一站。除此之外耕拷,Core核心模塊中還包括框架內(nèi)部使用的各種工具類斑胜。

左分支

沿著Spring生命之樹往上左序遍歷,我們將來到AOP模塊掺炭。該模塊提供了一個輕便但功能強大的AOP框架凭戴,讓我們可以以AOP的形式增強各POJO的能力,進而補足OOP/OOSD之缺憾者冤。Spring的AOP框架符合AOP Alliance規(guī)范档痪,采用Proxy模式構(gòu)建,與IoC容器相結(jié)合愿汰,可以充分顯示出Spring AOP的強大威力。我們將在了解了Spring的IoC容器的基礎(chǔ)上摇予,詳細講述Spring AOP這一部分吗跋。

繼續(xù)上行跌宛,Spring框架在Core核心模塊和AOP模塊的基礎(chǔ)上,為我們提供了完備的數(shù)據(jù)訪問和務(wù)管理的抽象和集成服務(wù)本缠。在數(shù)據(jù)訪問支持方面入问,Spring對JDBC API的最佳實踐極大地簡化了該API的使用稀颁。除此之外,Spring框架為各種當(dāng)前業(yè)界流行的ORM產(chǎn)品棱烂,比如Hibernate阶女、iBATIS秃踩、Toplink、JPA等提供了形式統(tǒng)一的集成支持憔杨。Spring框架中的事務(wù)管理抽象層是Spring AOP的最佳實踐消别,它直接構(gòu)建在Spring AOP的基礎(chǔ)之上,為我們提供了編程式事務(wù)管理和聲明式事務(wù)管理的完備支持岁经。這些服務(wù)極大地簡化了日常應(yīng)用開發(fā)過程中的數(shù)據(jù)訪問和事務(wù)管理工作蛇券。在學(xué)習(xí)完這兩部分內(nèi)容之后樊拓,相信讀者將會有切身的體會骑脱。

中間分支

為了簡化各種Java EE服務(wù)(像JNDI苍糠、JMS以及JavaMail等)的使用,Spring框架為我們提供了針對這些Java EE服務(wù)的集成服務(wù)拥娄。在Spring的幫助下瞳筏,這些Java EE服務(wù)現(xiàn)在都變得不再煩瑣難用。因為相關(guān)的Java EE服務(wù)較多摊欠,我們將會選擇合適的幾種介紹Spring框架給予它們的支持柱宦。

右分支

最后要提到的就是Web模塊掸刊。在該模塊中,Spring框架提供了一套自己的Web MVC框架石窑,職責(zé)分明的角色劃分讓這套框架看起來十分地“醒目”蚓炬。我們將為Spring的Web MVC框架單獨開辟一塊“領(lǐng)地”進行講解。在那一部分中棺棵,讀者可以充分領(lǐng)略Web MVC框架的魅力熄捍。Spring的Portlet MVC構(gòu)建在Spring Web MVC之上余耽,延續(xù)了Spring Web MVC的一貫風(fēng)格。

就像一棵樹必須依賴強大的根基才能生長繁盛一樣币喧,Spring框架內(nèi)的各個模塊也是如此。理論上來說干发,上層的模塊需要依賴下層的模塊才能正常工作史翘,這就是為什么說這些模塊是相互依賴的琼讽。不過,近乎處于同一水平線的各個模塊之間卻可以認(rèn)為是相互獨立的钻蹬,彼此之間沒什么瓜葛问欠。從這個角度看,這些模塊之間的相互獨立一說也是成立的术唬。
以上就是對整個Spring框架的總體介紹滚澜。

0x03 Spring大觀園

在開始愉快的Spring旅程之前嫁怀,我想帶大家先逛一逛“Spring大觀園”塘淑,這樣,大家就會發(fā)現(xiàn)即將開始的Spring之旅更加值得期待槐沼。

Spring大觀園中有一棵參天大樹捌治,它得以茁壯成長,主要因為它有一個好的根基兼吓,那就是Spring框架森枪。在Spring框架的基礎(chǔ)上视搏,Spring家族人丁開始興旺审孽,不斷涌現(xiàn)出一個又一個引人注目的家族成員,
包括但不限于:

  • Spring Web Flow(SWF)
  • Spring Framework浑娜;
  • Spring Security(原來的Acegi)佑力;
  • Spring Web Flow;
  • Spring Web Services筋遭;
  • Spring Dynamic Modules for the OSGi Service Platform打颤;
  • Spring Batch;
  • Pitchfork(http://www.springsource.com/pitchfork)宛畦;
  • AspectJ(http://www.eclipse.org/aspectj/)瘸洛;
  • Spring IDE;
  • Spring .NET次和;
  • Spring LDAP;
  • Spring Rich Client踏施;
  • Spring Integration石蔗。

小結(jié):

本文首先對Spring框架得以迅速崛起的背景做了簡短介紹,然后帶領(lǐng)讀者從總體上了解了Spring框架的構(gòu)成畅形。最后粗略列舉了Spring體系的成員养距。在開啟Spring之旅之前,先要記住歷史和整體的框架日熬,后面再慢慢填充知識點棍厌。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市竖席,隨后出現(xiàn)的幾起案子耘纱,更是在濱河造成了極大的恐慌,老刑警劉巖毕荐,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件束析,死亡現(xiàn)場離奇詭異,居然都是意外死亡憎亚,警方通過查閱死者的電腦和手機员寇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來第美,“玉大人蝶锋,你說我怎么就攤上這事∈餐” “怎么了牲览?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我第献,道長贡必,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任庸毫,我火速辦了婚禮仔拟,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘飒赃。我一直安慰自己利花,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布载佳。 她就那樣靜靜地躺著炒事,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蔫慧。 梳的紋絲不亂的頭發(fā)上挠乳,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天,我揣著相機與錄音姑躲,去河邊找鬼睡扬。 笑死,一個胖子當(dāng)著我的面吹牛黍析,可吹牛的內(nèi)容都是我干的卖怜。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼阐枣,長吁一口氣:“原來是場噩夢啊……” “哼马靠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蔼两,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤虑粥,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后宪哩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡第晰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年锁孟,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片茁瘦。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡品抽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出甜熔,到底是詐尸還是另有隱情圆恤,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布腔稀,位于F島的核電站盆昙,受9級特大地震影響羽历,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜淡喜,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一秕磷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧炼团,春花似錦澎嚣、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至锌俱,卻和暖如春晤郑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背嚼鹉。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工贩汉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人锚赤。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓匹舞,卻偏偏與公主長得像,于是被迫代替她去往敵國和親线脚。 傳聞我的和親對象是個殘疾皇子赐稽,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容