Spring技術(shù)內(nèi)幕(第2版)

出版時間:2012-2  出版社:機(jī)械工業(yè)出版社  作者:計文柯  頁數(shù):416  
Tag標(biāo)簽:無  

前言

  為什么要寫這本書  本書探討了Spring框架的設(shè)計原理、架構(gòu)和運(yùn)行機(jī)制。作為在Java領(lǐng)域最為成功的開源軟件之一,Spring在Java EE開發(fā)中,使用者眾多。本書以Spring的源代碼為依托,結(jié)合Spring的設(shè)計思路,從內(nèi)部實現(xiàn)的角度,對Spring的實現(xiàn)進(jìn)行了翔實的分析,希望能夠通過這種分析,使讀者在開發(fā)者的層面掌握Spring,為開發(fā)Spring應(yīng)用提供更扎實的框架基礎(chǔ)。  “忽如一夜春風(fēng)來”,伴隨著2002年Rod Johnson的《Expert One-on-One J2EE Design and Development》一書的出版而正式發(fā)布的Spring框架(也就是當(dāng)年的interface21),經(jīng)過這幾年的發(fā)展,已經(jīng)逐漸成熟起來。“吹面不寒楊柳風(fēng)”,Spring帶來的嶄新開發(fā)理念,也早已伴隨著它的廣泛應(yīng)用而“飛入尋常百姓家”?! ∨c此同時,隨著Spring的不斷成熟和完善,開源社區(qū)的成長,以及Spring開發(fā)團(tuán)隊的不懈努力,以Spring為核心的一系列開源軟件產(chǎn)品也越來越豐富,現(xiàn)已發(fā)展成為一個包括軟件構(gòu)建、開發(fā)、運(yùn)行、部署整個軟件生命周期的產(chǎn)品族群。Spring不但改變了Java EE應(yīng)用的開發(fā)和服務(wù)模式,向純商業(yè)軟件發(fā)出了有力的挑戰(zhàn),同時也成為Java軟件生態(tài)鏈中不可或缺的重要組成部分。它所具備的那種平易近人、內(nèi)涵豐富的品質(zhì),對我們這些軟件愛好者來說,實在是一個不可多得的學(xué)習(xí)范本?! 『喕疛ava企業(yè)應(yīng)用的開發(fā)是Spring框架的目標(biāo)。其輕量級的開發(fā)思想,為開發(fā)者提供便利的出發(fā)點(for the developer, to the developer and by the developer —這是Rod Johnson在一次演講中的開場白),以及具有活力的開源社區(qū),所有的這些,都為使用Java開發(fā)企業(yè)應(yīng)用和Web應(yīng)用帶來了福音,這些都是Spring吸引我們的地方。  在Java企業(yè)應(yīng)用中,與我們熟悉的企業(yè)應(yīng)用服務(wù)器一樣,Spring也希望能夠集成管理企業(yè)應(yīng)用資源,以及為應(yīng)用開發(fā)提供平臺支持。在這一點上,Spring與UNIX和Windows等傳統(tǒng)意義上的操作系統(tǒng),在計算系統(tǒng)中起到的作用是類似的。不同點在于,傳統(tǒng)操作系統(tǒng)關(guān)心的是存儲、計算、通信、外圍設(shè)備等這些物理資源的管理,并在管理這些資源的基礎(chǔ)上,為應(yīng)用程序提供統(tǒng)一的平臺和服務(wù)接口;而Spring關(guān)心的是,如何為開發(fā)者集中管理在Java企業(yè)應(yīng)用和Web應(yīng)用中涉及的數(shù)據(jù)持久化、事務(wù)處理、消息中間件、分布式計算等抽象資源,并在此基礎(chǔ)上,為應(yīng)用提供了一個基于POJO的開發(fā)環(huán)境。盡管二者面向的資源、管理的對象、支持的應(yīng)用,以及使用的場景不同,但它們在整個計算系統(tǒng)中的定位,卻有著可以類比和相互參考之處。所以,筆者根據(jù)對傳統(tǒng)操作系統(tǒng)的認(rèn)識方法,粗淺地把Spring框架劃分為核心、組件和應(yīng)用三個基本的層次,通過這三個層次中一些主要特性來剖析Spring的工作原理和運(yùn)作機(jī)制。同時,也用這樣的認(rèn)識邏輯來組織本書中要闡述的內(nèi)容?! ≡谶@樣的層次劃分中,首先看到的是對IoC容器和AOP這兩個核心模塊的工作原理的分析,它們都是Spring平臺實現(xiàn)的核心部分;同時,它們也是Spring的其他模塊實現(xiàn)的基礎(chǔ)。雖然,對大多數(shù)開發(fā)者而言,都只是在此基礎(chǔ)上進(jìn)行相關(guān)的配置和外部功能的使用,但是,深入理解這兩個核心模塊的工作原理和運(yùn)作機(jī)制,對于我們更好地應(yīng)用Spring進(jìn)行開發(fā)是至關(guān)重要的。因為,從Spring要簡化Java EE開發(fā)的出發(fā)點來看,它是通過對POJO開發(fā)提供支持來實現(xiàn)的。具體地說,Spring通過為應(yīng)用基于POJO的開發(fā)模式提供支持,從而使應(yīng)用開發(fā)和復(fù)雜的Java EE服務(wù)實現(xiàn)解耦,并由此通過提高單元測試覆蓋率(也就是應(yīng)用系統(tǒng)的可測試性)來有效地提高整個Spring應(yīng)用的開發(fā)質(zhì)量。在這樣的開發(fā)場景下,需要把為POJO提供支持的各種Java EE服務(wù)支持抽象到Spring應(yīng)用平臺中去,并將其封裝起來。具體來說,這一系列的封裝工作,在Spring及其應(yīng)用實現(xiàn)中,離不開IoC容器和AOP這兩個核心模塊的支持,它們在很大程度上體現(xiàn)了Spring作為應(yīng)用開發(fā)平臺的核心價值。它們的實現(xiàn)是Rod Johnson在他的另外一本著作《Expert One-on-One J2EE Development without EJB》中所提到“Without EJB設(shè)計思想”的具體體現(xiàn),同時,也深刻地體現(xiàn)了Spring背后的設(shè)計理念?! ∑浯?,在IoC容器和AOP這兩個核心模塊的支持下,Spring為了簡化Java EE的開發(fā),為應(yīng)用開發(fā)提供了許多現(xiàn)成的用戶態(tài)的系統(tǒng)組件,比如事務(wù)處理、Web MVC、JDBC、O/R映射、遠(yuǎn)端調(diào)用等,通過這些系統(tǒng)組件,為企業(yè)應(yīng)用服務(wù)的實現(xiàn)提供驅(qū)動支持。這些由Spring或其生態(tài)系統(tǒng)(其本身、子項目或者社區(qū))提供的,類似于驅(qū)動模塊般的系統(tǒng)組件是開發(fā)應(yīng)用時經(jīng)常會用到的Java EE服務(wù)抽象。通過使用Spring提供的這些類似于驅(qū)動組件的中間產(chǎn)品,通過這一層Java EE服務(wù)的抽象,從而讓用戶可以通過使用簡單的開發(fā)接口或應(yīng)用模板,不但能夠很方便地使用各種Java EE服務(wù),還可以靈活地選取提供這些服務(wù)的各種不同的具體實現(xiàn)方案。讓應(yīng)用可以在各種第三方開源軟件或者商業(yè)產(chǎn)品中自由選擇,充分體現(xiàn)了Spring作為應(yīng)用平臺的開放性?! pring作為一個開源項目,它本身就是一個開放的生態(tài)系統(tǒng)。對于和Spring相關(guān)的一些項目,可以把它們看做在某個領(lǐng)域的用戶應(yīng)用,因為它們是和Spring實現(xiàn)緊密相關(guān)的,或者它們本身就作為Spring框架的應(yīng)用案例,體現(xiàn)了許多使用Spring的技巧。這些內(nèi)容都是我們開發(fā)應(yīng)用時的理想?yún)⒖迹⑶視S著技術(shù)的發(fā)展而不斷豐富,比如Spring DM、Spring FLEX、ACEGI安全性框架,以及Pet Clinic應(yīng)用實例等。一方面,可以把這些實現(xiàn)作為應(yīng)用的一個基本方案加以裁剪,以滿足特定領(lǐng)域的需求;另一方面,通過剖析這些應(yīng)用,可以為應(yīng)用開發(fā)提供很好的參考和借鑒,提高應(yīng)用開發(fā)的效率。  從更深層次的技術(shù)層面上來看,因為Spring是一個基于Java語言的應(yīng)用平臺,如果我們能夠?qū)pring的運(yùn)行環(huán)境Java計算模型(比如JVM的實現(xiàn)原理)有一些了解,將會加深我們對Spring實現(xiàn)原理的理解。反射機(jī)制、代理類、字節(jié)碼技術(shù)等這些JVM特性,都是在Spring實現(xiàn)中會涉及的一些Java計算環(huán)境的底層技術(shù)。一般的應(yīng)用開發(fā)人員可能不會直接從事與JVM底層實現(xiàn)相關(guān)的工作,但是,這些計算環(huán)境的底層知識對深入理解Spring是不可缺少的?! ≌f了這么多,很多讀者可能已經(jīng)有些迫不及待了,只有對Spring的設(shè)計和實現(xiàn)身臨其境地接觸才是真實的,這里太多的文字已經(jīng)成為一種累贅。本書將帶領(lǐng)你到Spring核心設(shè)計這個茂密而又充滿生機(jī)的源代碼叢林中去一探究竟。在這里,你會驚奇地發(fā)現(xiàn):這個過程就像是閱讀優(yōu)美的散文一樣,是與開源軟件開發(fā)者及開發(fā)者社區(qū)之間的一種暢快淋漓的交流,讓人如癡如醉。  第1版與第2版的區(qū)別  本書是第2版,在寫作過程中吸收了讀者對上一版內(nèi)容的許多意見和建議,比如著重增加了對Spring宏觀框架和設(shè)計方面的闡述,加強(qiáng)了對Spring各種特性應(yīng)用場景方面的描述,并結(jié)合了深入具體的源代碼實現(xiàn)。希望通過這些改進(jìn),給讀者一個從應(yīng)用到設(shè)計再到實現(xiàn)的完整理解,彌補(bǔ)第1版中深度有余,內(nèi)容層次不夠豐富,分析手法單一等諸多不足。  較第1版而言,第2版的改動主要體現(xiàn)在以下幾個方面,希望讀者能夠在閱讀中體會?! ≡趦?nèi)容闡述方式上,對每一章的內(nèi)容進(jìn)行了調(diào)整和重新編排,基本按照“使用場景”、“設(shè)計和實現(xiàn)過程”、“源碼實現(xiàn)”這樣的邏輯來重新組織大部分內(nèi)容。希望通過這樣的組織方式,能夠使讀者以由表及里,由配置應(yīng)用到設(shè)計實現(xiàn),從抽象到具體的方式來了解Spring的各個模塊,從而豐富對Spring各個層次的認(rèn)識?! ≡诨趯崿F(xiàn)源碼分析的基礎(chǔ)上,增加了許多對Spring設(shè)計的分析,這些設(shè)計分析主要包括:在各個Spring模塊中,核心類的繼承關(guān)系、主要接口設(shè)計、主要功能特性實現(xiàn)的對象交互關(guān)系等。在描述這部分內(nèi)容時,大多以UML類圖和時序圖的方式給出,從而幫助讀者對Spring的設(shè)計有一個直觀的了解,而不至于一下子就深入到Spring源代碼實現(xiàn)中去,導(dǎo)致只見樹木不見森林,另一方面也可以改善對Spring源代碼解讀的學(xué)習(xí)曲線。同時,在設(shè)計分析的過程中,盡可能地對在Spring設(shè)計中使用到的一些典型設(shè)計模式進(jìn)行提示,通過這種方式使讀者可以體會到各種設(shè)計模式在Spring設(shè)計中的靈活運(yùn)用;結(jié)合Spring的設(shè)計和實現(xiàn)為設(shè)計模式的運(yùn)用提供一系列絕佳的實際案例,從而提高讀者對軟件設(shè)計的理解和設(shè)計模式的實際運(yùn)用能力。  在具體內(nèi)容的呈現(xiàn)上,對上一版的內(nèi)容進(jìn)行了一些調(diào)整,這些調(diào)整包括:增加了第1章,對Spring項目的概要情況進(jìn)行了簡要闡述;同時把第1版中的一些內(nèi)容,比如源代碼環(huán)境的準(zhǔn)備、Spring 發(fā)布包的構(gòu)建、Spring IDE的基本使用,以及Pet Clinic應(yīng)用實例的分析等內(nèi)容,放到了附錄部分進(jìn)行闡述。除此之外,在這一版中,根據(jù)Spring項目的自身發(fā)展情況增加了一些新的內(nèi)容,比如對Spring DM和Spring FLEX這兩個模塊的分析。通過對這些Spring模塊的分析,一方面可以了解Spring的發(fā)展歷程,豐富視野;另一方面,也可以看到Spring與時俱進(jìn)的旺盛生命力?! ∽x者對象  學(xué)習(xí)Java語言和Java EE技術(shù)的中高級讀者  Spring是利用Java語言實現(xiàn)的,其很多特性的設(shè)計和實現(xiàn)都極其優(yōu)秀,非常具有研究和參考價值。對這部分讀者來說,不僅可以從本書中了解Spring的實現(xiàn)原理,還能通過Spring的設(shè)計原理和源代碼實現(xiàn),掌握大量的Java設(shè)計方法、設(shè)計模式、編碼技巧和Java EE開發(fā)技術(shù)?! pring應(yīng)用開發(fā)人員  如果要利用Spring進(jìn)行高級應(yīng)用開發(fā),抑或是相關(guān)的優(yōu)化和擴(kuò)展工作,僅僅掌握Spring的配置和基本使用是遠(yuǎn)遠(yuǎn)不夠的,必須要對Spring框架的設(shè)計原理、架構(gòu)和運(yùn)作機(jī)制有一定的了解。對這部分讀者而言,本書將帶領(lǐng)他們?nèi)媪私釹pring的設(shè)計和實現(xiàn),從而加深對Spring框架的理解,提高開發(fā)水平。同時,本書可以作為他們定制和擴(kuò)展Spring框架的參考資料?! ¢_源軟件愛好者  Spring是開源軟件中的佼佼者,它在實現(xiàn)的過程中吸收了很多開源領(lǐng)域的優(yōu)秀思想,同時也有很多值得學(xué)習(xí)的創(chuàng)新。尤為值得一提的是,本書分析Spring設(shè)計和實現(xiàn)的方式也許值得所有開源軟件愛好者進(jìn)行學(xué)習(xí)和借鑒。通過閱讀本書,這部分讀者不僅能領(lǐng)略到開源軟件的優(yōu)秀思想,還可以掌握分析開源軟件源代碼的方法和技巧,從而進(jìn)一步提高使用開源軟件的效率和質(zhì)量?! ∑脚_開發(fā)人員和架構(gòu)師  Spring的設(shè)計思想和體系結(jié)構(gòu)、詳細(xì)設(shè)計和源碼實現(xiàn)都是非常優(yōu)秀的,是平臺開發(fā)人員和架構(gòu)師們不可多得的參考資料。  如何閱讀本書  本書主要內(nèi)容分為三個部分,分別闡述了Spring的核心、組件和應(yīng)用三個方面。在展開這三個部分的內(nèi)容之前,第1章對Spring的項目情況和整體架構(gòu)進(jìn)行了簡要的介紹,這一章就像一個熱身活動,為本書的主要內(nèi)容做鋪墊,如果您已經(jīng)很熟悉Spring的使用,這一章可以自行跳過,直接進(jìn)入到下面三個主體部分的內(nèi)容?! 〉谝徊糠衷敿?xì)分析了IoC容器和AOP的實現(xiàn),這部分內(nèi)容是理解Spring平臺的基礎(chǔ),適合對Spring的運(yùn)行機(jī)理有深入了解需求的讀者閱讀。在對AOP實現(xiàn)模塊的分析中涉及的一些JVM底層技術(shù),也是讀者需要具備的背景知識?! 〉诙糠稚钊腙U述了基于Spring IoC容器和AOP的Java EE組件在Spring中的實現(xiàn)。在這部分內(nèi)容中可以看到,每一個組件實現(xiàn)的內(nèi)容基本上都是相對獨立的,讀者可以結(jié)合自己的需求選讀。如果對Spring Web MVC的實現(xiàn)感興趣,可以閱讀第4章;如果對Spring提供的數(shù)據(jù)庫操作的實現(xiàn)機(jī)制感興趣,可以閱讀第5章;如果對Spring中提供的統(tǒng)一事務(wù)處理的實現(xiàn)感興趣,可以閱讀第6章;如果對Spring提供的各種不同的遠(yuǎn)端調(diào)用實現(xiàn)感興趣,可以閱讀第7章?! 〉谌糠种v述了一些基于Spring的典型應(yīng)用的實現(xiàn)。如果讀者對在Spring應(yīng)用中如何滿足應(yīng)用資源的安全性需求方面的內(nèi)容感興趣,可以閱讀第8章,本章對為Spring應(yīng)用提供安全服務(wù)的ACEGI框架的實現(xiàn)進(jìn)行了分析,在深入了解這部分內(nèi)容的基礎(chǔ)上,讀者可以根據(jù)自己的應(yīng)用需求定制自己的安全系統(tǒng)。第9章分析了Spring DM的設(shè)計和實現(xiàn),通過Spring DM,可以將Spring應(yīng)用便利地架構(gòu)到OSGi的框架上去。第10章分析了Spring Flex的設(shè)計和實現(xiàn),為使用Adobe Flex作為應(yīng)用前端架構(gòu)的Spring應(yīng)用提供參考?! ¢喿x本書時,建議讀者在自己的計算機(jī)中建立一個源代碼閱讀環(huán)境,這樣一方面可以追蹤最新的源代碼實現(xiàn),另一方面,可以在閱讀的過程中進(jìn)行各種方式的索引和動手驗證,加深對開源軟件開發(fā)方式的體會。關(guān)于如何建立Spring的源代碼環(huán)境,進(jìn)行Spring項目的構(gòu)建,通過IDE閱讀源代碼的基本方法等,感興趣的讀者可以參考本書附錄中的內(nèi)容。  在附錄A、B、C中,對如何建立Spring項目環(huán)境進(jìn)行了簡要介紹,這部分內(nèi)容包括如何獲取Spring項目的源代碼,如何構(gòu)建Spring的發(fā)布包,如何使用Spring IDE工具等。這些知識不但適用于建立Spring的源代碼研究環(huán)境,還適用于其他的Java開源項目,有一定的普遍性和參考價值。對于不同的Java開源項目,其使用的源代碼管理工具、代碼倉庫的位置、權(quán)限配置會有所不同,但是,整個源代碼的獲取過程與獲取Spring源代碼的過程是類似的,整個構(gòu)建過程也與Spring的構(gòu)建方式大體相似,是非常值得我們參考的。  在附錄D中,對伴隨Spring項目的應(yīng)用實例Pet Clinic進(jìn)行了分析,這個應(yīng)用實例為Spring應(yīng)用開發(fā)提供了一個現(xiàn)實的使用案例,雖然簡單,卻相對完整。這個應(yīng)用實例本身也是Spring團(tuán)隊的作品,是Spring項目發(fā)布的一部分,其中為我們更好地使用Spring提供參考?! 】闭`和支持  由于作者對Spring的認(rèn)知水平有限,再加上寫作時的疏漏,書中還存在許多需要改進(jìn)的地方。在此,歡迎讀者朋友們指出書中存在的問題,并提出指導(dǎo)性意見,不甚感謝。如果大家有任何與本書相關(guān)的內(nèi)容需要與我探討,也可以加入本書微群q.weibo.com/943166,我會及時給予回復(fù)。最后,衷心地希望本書能給大家?guī)韼椭?,并祝大家閱讀愉快!  致謝  感謝互聯(lián)網(wǎng),感謝開源軟件,感謝Java,感謝Spring,感謝我們的社區(qū),讓我體驗到如此美妙的開放氛圍,體會到開源軟件如此獨特的魅力!好了,不多說了,筆者真誠地希望通過本書為你打開一個小小的入口,曲徑通幽,通過這個入口,讓我們一起在由開源軟件和互聯(lián)網(wǎng)構(gòu)成的美麗風(fēng)景中快樂地旅行!  計文柯(Wenke J)

內(nèi)容概要

  本書是國內(nèi)唯一一本系統(tǒng)分析Spring源代碼的著作,也是Spring領(lǐng)域的問鼎之作,由業(yè)界擁有10余年開發(fā)經(jīng)驗的資深Java專家親自執(zhí)筆,Java開發(fā)者社區(qū)和Spring開發(fā)者社區(qū)聯(lián)袂推薦。本書第1版不僅在內(nèi)容上獲得了讀者的廣泛好評,而且在銷量上也摘取了同類書的桂冠,曾經(jīng)一度掀起Java類圖書的銷售熱潮。第2版不僅繼承了第1版在內(nèi)容組織和寫作方式上的優(yōu)點,而且還根據(jù)廣大讀者的反饋改進(jìn)了若干細(xì)節(jié)上的不足。更為重要的是,結(jié)合Spring的最新版本對過時的內(nèi)容進(jìn)行了更新,并增加了大量新內(nèi)容,使本書更趨近于完美。
  本書從源代碼的角度對Spring的內(nèi)核和各個主要功能模塊的架構(gòu)、設(shè)計和實現(xiàn)原理進(jìn)行了深入剖析。你不僅能從本書中參透Spring框架的優(yōu)秀架構(gòu)和設(shè)計思想,還能從Spring優(yōu)雅的實現(xiàn)源碼中一窺Java語言的精髓。本書在開篇之前對Spring的設(shè)計理念和整體架構(gòu)進(jìn)行了全面的介紹,能讓讀者從宏觀上厘清Spring各個功能模塊之間的關(guān)系;第一部分詳細(xì)分析了Spring的核心:IoC容器和AOP的實現(xiàn),能幫助讀者了解Spring的運(yùn)行機(jī)制;第二部分深入闡述了各種基于IoC容器和AOP的Java
EE組件在Spring中的實現(xiàn)原理;第三部分講述了ACEGI安全框架、DM模塊以及Flex模塊等基于Spring的典型應(yīng)用的設(shè)計與實現(xiàn)。
  無論你是Java程序員、Spring開發(fā)者,還是平臺開發(fā)人員、系統(tǒng)架構(gòu)師,抑或是對開源軟件源代碼著迷的代碼狂人,都能從本書中受益。

作者簡介

  計文柯:資深軟件開發(fā)專家和項目經(jīng)理,擁有10余年業(yè)界經(jīng)驗,對Spring等開源軟件的應(yīng)用和實現(xiàn)原理有深入研究和獨到見解。產(chǎn)品研發(fā)和項目管理經(jīng)驗豐富,曾就職于華為、摩托羅拉等知名企業(yè)和硅谷移動互聯(lián)網(wǎng)創(chuàng)業(yè)公司,在軟件工程和項目管理方面積累了大量最佳實踐?,F(xiàn)與同伴一起創(chuàng)立并運(yùn)營深圳云果科技,專注于云計算解決方案的研究與實施。

書籍目錄

前言
第1章 Spring的設(shè)計理念和整體架構(gòu)
 1.1 Spring的各個子項目
 1.2 Spring的設(shè)計目標(biāo)
 1.3 Spring的整體架構(gòu)
 1.4 Spring的應(yīng)用場景
 1.5 小結(jié)
第一部分 Spring核心實現(xiàn)篇
 第2章 Spring Framework的核心:IoC容器的實現(xiàn)
  2.1 Spring IoC容器概述
  2.1.1 IoC容器和依賴反轉(zhuǎn)模式
  2.1.2 Spring IoC的應(yīng)用場景
  2.2 IoC容器系列的設(shè)計與實現(xiàn):BeanFactory和ApplicationContext
  2.2.1 Spring的IoC容器系列
  2.2.2 Spring IoC容器的設(shè)計
  2.3 IC容器的初始化過程
  2.3.1 BeanDefinition的Resource定位
  2.3.2 BeanDefinition的載入和解析
  2.3.3 BeanDefinition在IoC容器中的注冊
  2.4 IoC容器的依賴注入
  2.5 容器其他相關(guān)特性的設(shè)計與實現(xiàn)
  2.5.1 ApplicationContext和Bean的初始化及銷毀
  2.5.2 lazy-init屬性和預(yù)實例化
  2.5.3 FactoryBean的實現(xiàn)
  2.5.4 BeanPostProcessor的實現(xiàn)
  2.5.5 autowiring(自動依賴裝配)的實現(xiàn)
  2.5.6 Bean的依賴檢查
  2.5.7 Bean對IoC容器的感知
  2.6 小結(jié)
 第3章 Spring AOP的實現(xiàn)
  3.1 Spring AOP概述
  3.1.1 AOP概念回顧
  3.1.2 Advice通知
  3.1.3 Pointcut切點
  3.1.4 Advisor通知器
  3.2 Spring AOP的設(shè)計與實現(xiàn)
  3.2.1 JVM的動態(tài)代理特性
  3.2.2 Spring AOP的設(shè)計分析
  3.2.3 Spring AOP的應(yīng)用場景
  3.3 建立AopProxy代理對象
  3.3.1 設(shè)計原理
  3.3.2 配置ProxyFactoryBean
  3.3.3 ProxyFactoryBean生成AopProxy代理對象
  3.3.4 JDK生成AopProxy代理對象
  3.3.5 CGLIB生成AopProxy代理對象
  3.4 Spring AOP攔截器調(diào)用的實現(xiàn)
  3.4.1 設(shè)計原理
  3.4.2 JdkDynamicAopProxy的invoke攔截
  3.4.3 Cglib2AopProxy的intercept攔截
  3.4.4 目標(biāo)對象方法的調(diào)用
  3.4.5 AOP攔截器鏈的調(diào)用
  3.4.6 配置通知器
  3.4.7 Advice通知的實現(xiàn)
  3.4.8 ProxyFactory實現(xiàn)AOP
  3.5 Spring AOP的高級特性
  3.6 小結(jié)
第二部分 Spring組件實現(xiàn)篇
 第4章 Spring MVC與Web環(huán)境
  4.1 Spring MVC概述
  4.2 Web環(huán)境中的Spring MVC
  4.3 上下文在Web容器中的啟動
  4.3.1 IoC容器啟動的基本過程
  4.3.2 Web容器中的上下文設(shè)計
  4.3.3 ContextLoader的設(shè)計與實現(xiàn)
  4.4 Spring MVC的設(shè)計與實現(xiàn)
  4.4.1 Spring MVC的應(yīng)用場景
  4.4.2 Spring MVC設(shè)計概覽
  4.4.3 DispatcherServlet的啟動和初始化
  4.4.4 MVC處理HTTP分發(fā)請求
  4.5 Spring MVC視圖的呈現(xiàn)
  4.5.1 DispatcherServlet視圖呈現(xiàn)的設(shè)計
  4.5.2 JSP視圖的實現(xiàn)
  4.5.3 ExcelView的實現(xiàn)
  4.5.4 PDF視圖的實現(xiàn)
  4.6 小結(jié)
 第5章 數(shù)據(jù)庫操作組件的實現(xiàn)
  5.1 Spring JDBC的設(shè)計與實現(xiàn)
  5.1.1 應(yīng)用場景
  5.1.2 設(shè)計概要
  5.2 Spring JDBC中模板類的設(shè)計與實現(xiàn)
  5.2.1 設(shè)計原理
  5.2.2 JdbcTemplate的基本使用
  5.2.3 JdbcTemplate的execute實現(xiàn)
  5.2.4 JdbcTemplate的query實現(xiàn)
  5.2.5 使用數(shù)據(jù)庫Connection
  5.3 Spring JDBC中RDBMS操作對象的實現(xiàn)
  5.3.1 SqlQuery的實現(xiàn)
  5.3.2 SqlUpdate的實現(xiàn)
  5.3.3 SqlFunction
  5.4 Spring ORM的設(shè)計與實現(xiàn)
  5.4.1 應(yīng)用場景
  5.4.2 設(shè)計概要
  5.5 Spring驅(qū)動Hibernate的設(shè)計與實現(xiàn)
  5.5.1 設(shè)計原理
  5.5.2 Hibernate的SessionFactory
  5.5.3 HibernateTemplate的實現(xiàn)
  5.5.4 Session的管理
  5.6 Spring驅(qū)動iBatis的設(shè)計與實現(xiàn)
  5.6.1 設(shè)計原理
  5.6.2 創(chuàng)建SqlMapClient
  5.6.3 SqlMapClientTemplate的實現(xiàn)
  5.7 小結(jié)
 第6章 Spring事務(wù)處理的實現(xiàn)
  6.1 Spring與事務(wù)處理
  6.2 Spring事務(wù)處理的設(shè)計概覽
  6.3 Spring事務(wù)處理的應(yīng)用場景
  6.4 Spring聲明式事務(wù)處理
  6.4.1 設(shè)計原理與基本過程
  6.4.2 實現(xiàn)分析
  6.5 Spring事務(wù)處理的設(shè)計與實現(xiàn)
  6.5.1 Spring事務(wù)處理的編程式使用
  6.5.2 事務(wù)的創(chuàng)建
  6.5.3 事務(wù)的掛起
  6.5.4 事務(wù)的提交
  6.5.5 事務(wù)的回滾
  6.6 Spring事務(wù)處理器的設(shè)計與實現(xiàn)
  6.6.1 Spring事務(wù)處理的應(yīng)用場景
  6.6.2 DataSourceTransactionManager的實現(xiàn)
  6.6.3 HibernateTransactionManager的實現(xiàn)
  6.7 小結(jié)
 第7章 Spring遠(yuǎn)端調(diào)用的實現(xiàn)
  7.1 Spring遠(yuǎn)端調(diào)用的應(yīng)用場景
  7.2 Spring遠(yuǎn)端調(diào)用的設(shè)計概覽
  7.3 Spring遠(yuǎn)端調(diào)用的實現(xiàn)
  7.3.1 Spring HTTP調(diào)用器的實現(xiàn)
  7.3.2 Spring Hession/Burlap的實現(xiàn)原理
  7.3.3 Spring RMI的實現(xiàn)
  7.4 小結(jié)
第三部分 Spring應(yīng)用實現(xiàn)篇
 第8章 安全框架ACEGI的設(shè)計與實現(xiàn)
  8.1 Spring ACEGI安全框架概述
  8.1.1 概述
  8.1.2 設(shè)計原理與基本實現(xiàn)過程
  8.1.3 ACEGI的Bean配置
  8.2 配置Spring ACEGI
  8.3 ACEGI的Web過濾器實現(xiàn)
  8.4 ACEGI驗證器的實現(xiàn)
  8.4.1 AuthenticationManager的authenticate
  8.4.2 DaoAuthenticationProvider的實現(xiàn)
  8.4.3 讀取數(shù)據(jù)庫用戶信息
  8.4.4 完成用戶信息的對比驗證
  8.5 ACEGI授權(quán)器的實現(xiàn)
  8.5.1 與Web環(huán)境的接口FilterSecurityInterceptor
  8.5.2 授權(quán)器的實現(xiàn)
  8.5.3 投票器的實現(xiàn)
  8.6 小結(jié)
 第9章 Spring DM模塊的設(shè)計與實現(xiàn)
  9.1 Spring DM模塊的應(yīng)用場景
  9.2 Spring DM的應(yīng)用過程
  9.3 Spring DM設(shè)計與實現(xiàn)
  9.4 小結(jié)
 第10章 Spring Flex的設(shè)計與實現(xiàn)
  10.1 Spring Flex模塊的應(yīng)用場景
  10.2 Spring Flex的應(yīng)用過程
  10.3 Spring Flex的設(shè)計與實現(xiàn)
  10.4 小結(jié)
附錄A Spring項目的源代碼環(huán)境
附錄B 構(gòu)建Spring項目的發(fā)布包
附錄C 使用Spring IDE
附錄D Spring Pet Clinic應(yīng)用實例

章節(jié)摘錄

  我們?nèi)绾尾拍芗茸岄_發(fā)變得容易,又能享受到JavaEE提供的各種服務(wù)呢?Spring的目標(biāo)就是通過自己的努力,讓用戶體會到這種簡單之中的強(qiáng)大。同時,作為應(yīng)用框架,Spring不想作為另外一種復(fù)雜開發(fā)模型的替代,也就是說不想用另一種復(fù)雜性去替代現(xiàn)有的復(fù)雜性,那是換湯不換藥,并不能解決問題.這就意味著需要有新的突破。要解決這個問題,需要降低應(yīng)用的負(fù)載和框架的侵入性,Spring是怎樣做到這一點的呢?  Spring為我們提供的解決方案就是IoC容器和AOP支持。作為依賴反轉(zhuǎn)模式的具體實現(xiàn),IoC容器很好地降低了框架的侵入性,也可以認(rèn)為依賴反轉(zhuǎn)模式是Spring體現(xiàn)出來的核心模式。這些核心模式是軟件架構(gòu)設(shè)計中非常重要的因素,我們常常看到的MVC模式就是這樣的核心模式。使用好這些核心模式,就像我們在Web應(yīng)用中使用MVC模式一樣,可以獲得非常大的便利?! pring核心的模式實現(xiàn),是為應(yīng)用提供IoC容器和AOP框架,從而在企業(yè)應(yīng)用開發(fā)中引入新的核心模式,并使用戶的開發(fā)方式發(fā)生很大的變化,具體來說,就是使用POJO來完成開發(fā),在簡化用戶開發(fā)的同時,依然能夠使用強(qiáng)大的服務(wù),能夠?qū)崿F(xiàn)復(fù)雜的企業(yè)應(yīng)用的開發(fā)需求?! ?hellip;…

媒體關(guān)注與評論

  正如當(dāng)初所預(yù)料的,本書的第1版大獲成功,不僅獲得了良好的口碑,而且也取得了喜人的銷售成績,堪稱Spring圖書領(lǐng)域的里程碑著作。在改版之前,作者收集了大量讀者對第1版的反饋,不僅改進(jìn)了第1版中存在的不足,而且還在組織結(jié)構(gòu)和寫作方式進(jìn)行了優(yōu)化。更為重要的是,第2版增加了大量新的內(nèi)容,使本書的內(nèi)容更豐富、更深入。相信第2版會比第1版更值得期待。強(qiáng)烈推薦!  ——專業(yè)Spring開發(fā)者社區(qū)  本書第一版熱銷的事實有力地證明了這的確是一本值得所有Spring開發(fā)者反復(fù)研讀的書。它以源代碼分析為手段,對Spring的架構(gòu)原理和設(shè)計思想進(jìn)行了全面地剖析,不僅能讓我們更深入、更徹底地認(rèn)識Spring,領(lǐng)略Spring的架構(gòu)之美和設(shè)計之美,更重要的是,它將全面提升我們的Spring開發(fā)技能?! ?mdash;—Spring中文用戶組

編輯推薦

  暢銷書全新升級,第1版廣獲好評,摘取Spring類圖書銷量桂冠,掀起Java類圖書銷售熱潮  系統(tǒng)解讀Spring最新版本源代碼,從宏觀和微觀兩個角度深入剖析Spring架構(gòu)設(shè)計與實現(xiàn)原理  資深Java專家親自執(zhí)筆,Java開發(fā)者社區(qū)和Spring開發(fā)者社區(qū)聯(lián)袂推薦

圖書封面

圖書標(biāo)簽Tags

評論、評分、閱讀與下載


    Spring技術(shù)內(nèi)幕(第2版) PDF格式下載


用戶評論 (總計95條)

 
 

  •   非常好的一本書,不同于一般的spring書籍只是泛泛的介紹spring的簡單使用方法,而是從源代碼、項目設(shè)計角度全面的分析spring,此書不但可以幫讀者掌握spring框架的使用方法,還可以幫助讀者深刻的認(rèn)識spring框架中包含的軟件設(shè)計思想。好書
  •   閱讀本書可以一石二鳥,既能加深對spring的理解,也能提升自己java的專家水平。
  •   spring源碼,提高java技術(shù)必讀
  •   適合學(xué)習(xí)了一頓時間的spring的人看,主要是分析spring的架構(gòu),幫助我們自己搭建框架的時候提供參考的功能
  •   非常深入的介紹了pring的技術(shù)原理,精通spring的一本好書,但不是很適合新手。
  •   spring非常強(qiáng)大,如果你要學(xué)項目經(jīng)驗,讀spring源碼是必須的,那么這本書是必須買的
  •   深入講解spring原理,很值得一看,淺顯易懂
  •   書還好,需要進(jìn)一步學(xué)習(xí)spring內(nèi)部實現(xiàn)的可以參考一下。要有一定的基礎(chǔ)
  •   對spring介紹很清楚,適合有點工作經(jīng)驗的人看,許多框架都使用過,但還不熟悉,這本書介紹很清楚
  •   Spring,基本搞JavaEE的都會學(xué),那么學(xué)習(xí)其原理是必須的。知其然,還要知其所以然。
  •   深入研究spring必備, 需要一點spring 基礎(chǔ)
  •   非常不錯,對想深入學(xué)習(xí)spring的人來說值得一買,對我的幫助非常大,并且速度也可以。
  •   內(nèi)容非常豐富,覆蓋spring絕大部分功能,是入門的好書。
  •   書剛拿到,大體的翻閱了一下目錄和前2章,發(fā)現(xiàn)該書對Spring的總結(jié)和作者對Spring的認(rèn)知度有相當(dāng)?shù)母叨?,非常值得一看,說的內(nèi)容也比較全面,是一本不可多得的好書!
  •   了解Spring
  •   書本適合接觸過spring的人看
  •   建議有點spring基礎(chǔ)的讀
  •   好書,SPRING必看
  •   一直都想學(xué)習(xí)一下Spring的內(nèi)部結(jié)構(gòu),今天終于要如愿了。
  •   值得做IT 特別是java 開發(fā)的技術(shù)人員細(xì)細(xì)品讀的經(jīng)典!
  •   我很喜歡這忠風(fēng)格的寫作方式,了解源代碼遠(yuǎn)比只知道怎么用更能讓人記憶深刻,雖然現(xiàn)階段看起來還有些費(fèi)勁,內(nèi)容卻是很好,推薦?。?!
  •   詳細(xì)寫了框架內(nèi)部結(jié)構(gòu)原理,對于喜歡框架的朋友會有所幫助
  •   剛買回來,才看到IOC部分
  •   很多推薦這本書的,不是很厚,一般般的圖書,章節(jié)很全,但是內(nèi)容介紹的不深。
  •   可以讓使用SSH框架的人有一個很深入地了解,有進(jìn)一步的提升。
  •   哎,介紹原理的書,我沒看清楚直接果斷買了。
    留著給以后看吧。。
  •   可以深入了解很多東西,大名鼎鼎的,早就想拜讀了
  •   書不錯 ,底了些底層的東西,對于理解框架很有幫助
  •   非常好的一本書!必須推薦
  •   書還沒有開始看,送貨速度很快。昨天下午的單一早就到。就這必須先給好評先
  •   講的很深入
  •   最為深入,可以的
  •   同事推薦的 了解底層?xùn)|西
  •   有深度的技術(shù)書籍,推薦一下啊
  •   正在讀,比直接看源碼好鞋
  •   目錄部分有重復(fù)裝訂,開始嚇了一跳,想著正版的還能這樣。還好后面的頁數(shù)沒有問題,不換了。不知道別人拿到書的是否也是這樣。
  •   大概翻了下,希望能靜下心來研究,不祈求太細(xì)節(jié),只當(dāng)做個敲門磚了 。
  •   還沒看的完。挺好的一本書 但是需要有一定的基礎(chǔ) 加上實踐才能體會
  •   同事強(qiáng)烈推薦給我,相信同事的眼光,所以買本鑒定下。
  •   講的很透徹,而且留了一定的讀者思考的空間,很不錯。
  •   書很好,還沒讀完,好多需要理論實踐相結(jié)合
  •   這本書寫得真不錯
  •   這本書名氣很大,不必多說
  •   初學(xué)者得讀上兩遍才能讀通。
  •   書的質(zhì)量不錯,內(nèi)容有待查看
  •   書的內(nèi)容就不用說了,確實不錯,紙張一般,重量比較輕,拿著很舒服。
  •   書內(nèi)容還算可以, 質(zhì)量也不錯.快遞很給力
  •   書不錯 還行 很新很好
  •   好書,值得好好研究。
  •   不知道公司已經(jīng)有一本來,又買來了,不過大家說不錯的,多一本也挺好的,不會被搶
  •   閑下來看看Springl內(nèi)部的思想,對自己受益匪淺!
  •   需要一點點mvc基礎(chǔ)知識,寫的還是比較詳細(xì)的,
  •   書才看一點,感覺真的很好
  •   書很好。就是看著比較枯燥。
  •   上午訂的書,下午就送到了,速度真快??!
    我喜歡這種服務(wù)!
  •   對于我來說 看這書是一個挑戰(zhàn)啊
  •   好好,非常好,包裝和快遞都好
  •   剛拿到手,大致翻閱了下,很不錯
  •   據(jù)說還不錯,剛買的,還沒開始閱讀,希望不坑。。。
  •   非常值得一看,非常有深度。
  •   還沒來得急看,等看了之后再來補(bǔ)評價
  •   別人都說好,應(yīng)該還不錯吧
  •   剛開始看,圖文并茂,由淺入深,不錯的好書
  •   留作藏本,以后還可以看
  •   還沒看。。這底層?xùn)|西。。要慢慢看哈
  •   我覺得很贊
  •   學(xué)好了 老板給我加工資 哈哈
  •   今天收到貨,最近要看。
  •   巨給力
  •   速度很快,給送到家
  •   邏輯性更強(qiáng)
  •   非常喜歡的書籍
  •   先看看,聽說不錯
  •   會擴(kuò)充很多的知識 很不錯
  •   對Spring的架構(gòu)和源碼做了比較深入的分析,適合對Spring,設(shè)計模式有一定了解,希望能深入學(xué)習(xí)Spring內(nèi)核的人
  •   挺好,深入了解spring實現(xiàn)原理及其應(yīng)用
  •   看過一些spring的書,這本比較深入分析了spring的實現(xiàn)方式,只是分析代碼的書真的有點枯燥
  •   書到,粗略翻看了一下。時序圖加源碼,配上詳細(xì)的講解,正式我想要的。個人感覺適合:有一定開發(fā)經(jīng)驗,想要深入了解spring內(nèi)部機(jī)理的同學(xué)。同時對強(qiáng)化設(shè)計能力很有幫助
  •   大致看了看, 這本書適合呢種對spring了解, 會使用的, 想深入了解內(nèi)部實現(xiàn)或者是想了解跟多高級功能的人來閱讀。 這書要看多遍才能真正領(lǐng)悟。 不建議初學(xué)者購買。
  •   400頁也就說說Spring的內(nèi)幕,而不能講清楚Spring的原理,書里面代碼非常多,入門還可以,研究的話就算了。2版的書可以看看
  •   本書對Spring技術(shù)作了詳細(xì)的解析,讀完后可以作為高手
  •   新版的書,感覺還不錯,正準(zhǔn)備好好研究一下spring,內(nèi)容還沒讀,
  •   沒有多少spring mvc的部分,其他還行
  •   我是spring愛好者,不過屬于入門級別的,看這本書有點吃力啊。
  •   只要有基礎(chǔ)的人看這書還是不錯的,專講Spring,缺的就是這樣的書!
  •   對Java的學(xué)習(xí)不太深入,所以不大能看懂,個人覺得適合高端學(xué)者
  •   不過還是自己點擊源碼,參考書上的說明看比較爽,直接看書上的代碼,看的云里霧里的
  •   我在大學(xué)的時候就有機(jī)會在圖書館看過這本書的第一版,覺得很不錯,但是還沒深入看過,所以就買了這本,很好,很不錯,值得學(xué)習(xí)
  •   感覺一般,內(nèi)容基本是 解讀源碼的,感覺有點亂 不如自己寫Demo 自己讀源碼
  •   好,好,好好學(xué)習(xí),天天象山
  •   很好地書~~~~~~~~~~~~~~~~~~~~~~~~~~
  •   不錯的書了。。
  •   好書號書
  •   快遞很給力,正版
  •   Spring技術(shù)內(nèi)幕
 

250萬本中文圖書簡介、評論、評分,PDF格式免費(fèi)下載。 第一圖書網(wǎng) 手機(jī)版

京ICP備13047387號-7