計文柯 著
適讀人群 :無論你是Java程序員、Spring開發(fā)者,還是平臺開發(fā)人員、系統(tǒng)架構(gòu)師,抑或是對開源軟件源代碼著迷的代碼狂人,都能從本書中受益。
暢銷書全新升級,第1版廣獲好評,摘取Spring類圖書銷量桂冠,掀起Java類圖書銷售熱潮
系統(tǒng)解讀Spring全新版本源代碼,從宏觀和微觀兩個角度深入剖析Spring架構(gòu)設(shè)計與實現(xiàn)原理
資深Java專家親自執(zhí)筆,Java開發(fā)者社區(qū)和Spring開發(fā)者社區(qū)聯(lián)袂推薦
本書探討了Spring框架的設(shè)計原理、架構(gòu)和運行機制。作為在Java領(lǐng)域極為成功的開源軟件,Spring在Java EE開發(fā)中,使用者眾多。本書以Spring的源代碼為依托,結(jié)合Spring的設(shè)計思路,從內(nèi)部實現(xiàn)的角度,對Spring的實現(xiàn)進行了翔實的分析,希望能夠通過這種分析,使讀者在開發(fā)者的層面掌握Spring,為開發(fā)Spring應(yīng)用提供更扎實的框架基礎(chǔ)。
《Spring技術(shù)內(nèi)幕:深入解析Spring架構(gòu)與設(shè)計原理(第2版)》是國內(nèi)一本系統(tǒng)分析Spring源代碼的著作,也是Spring領(lǐng)域的問鼎之作,由業(yè)界擁有10余年開發(fā)經(jīng)驗的專業(yè)Java專家親自執(zhí)筆,Java開發(fā)者社區(qū)和Spring開發(fā)者社區(qū)聯(lián)袂推薦。本書第1版不僅在內(nèi)容上獲得了讀者的廣泛好評,而且在銷量上也摘取了同類書的桂冠,曾經(jīng)一度掀起Java類圖書的銷售熱潮。第2版不僅繼承了第1版在內(nèi)容組織和寫作方式上的優(yōu)點,而且還根據(jù)廣大讀者的反饋改進了若干細節(jié)上的不足。更為重要的是,結(jié)合Spring的全新版本對過時的內(nèi)容進行了更新,并增加了大量新內(nèi)容,使本書更趨近于完美。
《Spring技術(shù)內(nèi)幕:深入解析Spring架構(gòu)與設(shè)計原理(第2版)》從源代碼的角度對Spring的內(nèi)核和各個主要功能模塊的架構(gòu)、設(shè)計和實現(xiàn)原理進行了深入剖析。你不僅能從本書中參透Spring框架的出色架構(gòu)和設(shè)計思想,還能從Spring優(yōu)雅的實現(xiàn)源碼中一窺Java語言的精髓。本書在開篇之前對Spring的設(shè)計理念和整體架構(gòu)進行了全面的介紹,能讓讀者從宏觀上厘清Spring各個功能模塊之間的關(guān)系;一部分詳細分析了Spring的核心:IoC容器和AOP的實現(xiàn),能幫助讀者了解Spring的運行機制;第二部分深入闡述了各種基于IoC容器和AOP的Java EE組件在Spring中的實現(xiàn)原理;第三部分講述了ACEGI安全框架、DM模塊以及Flex模塊等基于Spring的典型應(yīng)用的設(shè)計與實現(xiàn)。
無論你是Java程序員、Spring開發(fā)者,還是平臺開發(fā)人員、系統(tǒng)架構(gòu)師,抑或是對開源軟件源代碼著迷的代碼狂人,都能從本書中受益。
計文柯,專業(yè)軟件開發(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)立并運營深圳云果科技,專注于云計算解決方案的研究與實施。
正如當(dāng)初所預(yù)料的,本書的第1版大獲成功,不僅獲得了良好的口碑,而且也取得了喜人的銷售成績,堪稱Spring圖書領(lǐng)域的里程碑著作。在改版之前,作者收集了大量讀者對第1版的反饋,不僅改進了第1版中存在的不足,而且還在組織結(jié)構(gòu)和寫作方式進行了優(yōu)化。更為重要的是,第2版增加了大量新的內(nèi)容,使本書的內(nèi)容更豐富、更深入。相信第2版會比第1版更值得期待。強烈推薦!
——專業(yè)Spring開發(fā)者社區(qū)
本書一版熱銷的事實有力地證明了這的確是一本值得所有Spring開發(fā)者反復(fù)研讀的書。它以源代碼分析為手段,對Spring的架構(gòu)原理和設(shè)計思想進行了全面地剖析,不僅能讓我們更深入、更徹底地認識Spring,領(lǐng)略Spring的架構(gòu)之美和設(shè)計之美,更重要的是,它將全面提升我們的Spring開發(fā)技能。
——Spring中文用戶組
前言
第1章 Spring的設(shè)計理念和整體架構(gòu)
1.1 Spring的各個子項目
1.2 Spring的設(shè)計目標
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 目標對象方法的調(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遠端調(diào)用的實現(xiàn)
7.1 Spring遠端調(diào)用的應(yīng)用場景
7.2 Spring遠端調(diào)用的設(shè)計概覽
7.3 Spring遠端調(diào)用的實現(xiàn)
7.3.1 Spring HTTP調(diào)用器的實現(xiàn)
7.3.2 Spring Hession
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)用實例
我們?nèi)绾尾拍芗茸岄_發(fā)變得容易,又能享受到JavaEE提供的各種服務(wù)呢?Spring的目標就是通過自己的努力,讓用戶體會到這種簡單之中的強大。同時,作為應(yīng)用框架,Spring不想作為另外一種復(fù)雜開發(fā)模型的替代,也就是說不想用另一種復(fù)雜性去替代現(xiàn)有的復(fù)雜性,那是換湯不換藥,并不能解決問題.這就意味著需要有新的突破。要解決這個問題,需要降低應(yīng)用的負載和框架的侵入性,Spring是怎樣做到這一點的呢?
Spring為我們提供的解決方案就是IoC容器和AOP支持。作為依賴反轉(zhuǎn)模式的具體實現(xiàn),IoC容器很好地降低了框架的侵入性,也可以認為依賴反轉(zhuǎn)模式是Spring體現(xiàn)出來的核心模式。這些核心模式是軟件架構(gòu)設(shè)計中非常重要的因素,我們常常看到的MVC模式就是這樣的核心模式。使用好這些核心模式,就像我們在Web應(yīng)用中使用MVC模式一樣,可以獲得非常大的便利。
Spring核心的模式實現(xiàn),是為應(yīng)用提供IoC容器和AOP框架,從而在企業(yè)應(yīng)用開發(fā)中引入新的核心模式,并使用戶的開發(fā)方式發(fā)生很大的變化,具體來說,就是使用POJO來完成開發(fā),在簡化用戶開發(fā)的同時,依然能夠使用強大的服務(wù),能夠?qū)崿F(xiàn)復(fù)雜的企業(yè)應(yīng)用的開發(fā)需求。
……
【讀者對象】
★學(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ù)。
★Spring應(yīng)用開發(fā)人員
如果要利用Spring進行高級應(yīng)用開發(fā),抑或是相關(guān)的優(yōu)化和擴展工作,僅僅掌握Spring的配置和基本使用是遠遠不夠的,必須要對Spring框架的設(shè)計原理、架構(gòu)和運作機制有一定的了解。對這部分讀者而言,本書將帶領(lǐng)他們?nèi)媪私釹pring的設(shè)計和實現(xiàn),從而加深對Spring框架的理解,提高開發(fā)水平。同時,本書可以作為他們定制和擴展Spring框架的參考資料。
★開源軟件愛好者
Spring是開源軟件中的佼佼者,它在實現(xiàn)的過程中吸收了很多開源領(lǐng)域的優(yōu)秀思想,同時也有很多值得學(xué)習(xí)的創(chuàng)新。尤為值得一提的是,本書分析Spring設(shè)計和實現(xiàn)的方式也許值得所有開源軟件愛好者進行學(xué)習(xí)和借鑒。通過閱讀本書,這部分讀者不僅能領(lǐng)略到開源軟件的優(yōu)秀思想,還可以掌握分析開源軟件源代碼的方法和技巧,從而進一步提高使用開源軟件的效率和質(zhì)量。
★平臺開發(fā)人員和架構(gòu)師
Spring的設(shè)計思想和體系結(jié)構(gòu)、詳細設(shè)計和源碼實現(xiàn)都是非常優(yōu)秀的,是平臺開發(fā)人員和架構(gòu)師們不可多得的參考資料。
【如何閱讀本書】
本書主要內(nèi)容分為三個部分,分別闡述了Spring的核心、組件和應(yīng)用三個方面。在展開這三個部分的內(nèi)容之前,第1章對Spring的項目情況和整體架構(gòu)進行了簡要的介紹,這一章就像一個熱身活動,為本書的主要內(nèi)容做鋪墊,如果您已經(jīng)很熟悉Spring的使用,這一章可以自行跳過,直接進入到下面三個主體部分的內(nèi)容。
第①部分詳細分析了IoC容器和AOP的實現(xiàn),這部分內(nèi)容是理解Spring平臺的基礎(chǔ),適合對Spring的運行機理有深入了解需求的讀者閱讀。在對AOP實現(xiàn)模塊的分析中涉及的一些JVM底層技術(shù),也是讀者需要具備的背景知識。
第二部分深入闡述了基于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)機制感興趣,可以閱讀第5章;如果對Spring中提供的統(tǒng)一事務(wù)處理的實現(xiàn)感興趣,可以閱讀第6章;如果對Spring提供的各種不同的遠端調(diào)用實現(xiàn)感興趣,可以閱讀第7章。
第三部分講述了一些基于Spring的典型應(yīng)用的實現(xiàn)。如果讀者對在Spring應(yīng)用中如何滿足應(yīng)用資源的安全性需求方面的內(nèi)容感興趣,可以閱讀第8章,本章對為Spring應(yīng)用提供安全服務(wù)的ACEGI框架的實現(xià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)用提供參考。
更多建議: