-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

精通Spring 4.x ——企業應用開發實戰

( 簡體 字)
作者:陳雄華,林開雄,文建國類別:1. -> 程式設計 -> JAVA -> Spring
譯者:
出版社:電子工業出版社精通Spring 4.x ——企業應用開發實戰 3dWoo書號: 45897
詢問書籍請說出此書號!

缺書
NT售價: 640

出版日:1/1/2017
頁數:820
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121304439
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

本書小序
Spring從2004年發布第一個版本以來,至今已有12載。12年剛好是一個生肖輪回,但在一日千里的計算機領域,12年基本上算是一個世紀了。都說“好花不常開,好景不常在”,但Spring這朵Java開源世界里芳香馥郁的奇葩不但沒有零落成泥,反而滿園春色歷久彌艷,成為Java開發者無法回避的開源框架。
回顧Spring的光輝歲月,一路與時俱進,引領時代之潮流。總的來說,Spring主要經歷了三次重大的版本升級:一為2006年從1.0升級到2.0,在Spring 2.0中新增了XML命名空間、AspectJ及Spring MVC等功能,此外,在Spring 2.5中還引入了注解驅動配置的支持,同時進一步完善了Spring MVC功能;二為2009年從2.5升級到3.0,新增了SpEL、OXM、REST、驗證/格式化等功能,全面支持Java 5.0;三為2013年從3.0升級到4.0,新增了Groovy Bean配置、HTML 5/WebSocket支持等功能,全面支持Java 8.0,最低要求是Java 6.0。Spring始終堅持以小版本快速推進、每三年左右發布一個大版本的演化策略,既保證版本的平穩有序,又能緊跟技術發展的潮流。難能可貴的是,Spring即便發生了這么多次版本的升級,其整體框架依然是向下兼容的,在這一點上,Spring明顯區別于Struts、Hibernate等框架的升級風格。
筆者在2007年曾編寫了《精通Spring 2.x》,并在2012年出版了升級版本《精通Spring 3.x》。感謝讀者朋友的厚愛垂青,其中《精通Spring 3.x》已經重印了11次,成為國內Spring領域的暢銷書籍。2013年年底Spring 4.0就已經發布了,從那時起,出版社的朋友多次力促筆者進行版本的同步升級,筆者也希望能與時俱進地對原書進行更新,但囿于工作繁忙,一直未能付諸行動。直到2015年8月左右,才與林開雄、文建國著手籌劃《精通Spring 4.x》的升級編寫工作。林開雄和文建國是筆者多年的好朋友,二人都是擁有十多年工作經驗的Java實戰型技術高手,他們不但為人謙和、技術精湛,而且擁有豐厚的創作實力。林開雄早在2012年就參與了《精通Spring 3.x》的撰寫工作,文建國則于2014年翻譯了《Spring Data實戰》。此外,林莉、何彩云、陳謀坤、項群、陳文炎、陳曦、康玉琳、蔡雪峰、康沿清、朱景、賢俊等也一起參與了本書的代碼審查及測試工作,在此對大家的努力付出一并表示感謝!
本次改版,不但將全書內容同步更新到Spring 4.0,還對全書結構進行了多方面的優化和調整。移除了兩個章節,分別是“JavaMail發送郵件”(考慮到比較簡單)及“在Spring中開發Web Service”(考慮到Spring MVC開發REST WebService再合適不過了);新增了3個全新的章節,分別是“Spring Boot”、“Spring SpEL”及“Spring Cache”。
本書特點
? 揭示內幕,深入淺出:筆者對Spring的源碼進行了徹底分析,深刻揭示了Spring框架的技術內幕,讓讀者知其然,更知其所以然。Spring中的許多設計經驗、技巧、模式具有很高的借鑒性,在透徹學習Spring體系結構的同時,讀者可以直接將這些方法借用到具體的應用開發中。
? 同步更新,與時俱進:雖然在2013年12月就發布Spring 4.0的第一個候選版本,后來又發布了多個RC版本,并最終于2015年8月發布了Spring 4.2的正式版本,但新功能的添加及舊功能的調整從來就沒有停止過。本書基于Spring 4.2版本講解,保證全書內容與時俱進。
? 突出重點,淡化邊緣:雖然全書篇幅達800多頁,但本書沒有片面追求內容的面面俱到,相反,我們特別注意內容的剪裁和取舍;對于實用性強的知識點深入分析、深度挖掘,而對于不常用的知識點則點到為止,甚至不納入本書的范圍。舉例來說,我們對使用Spring JDBC、Spring Cache及Spring MVC等實用性強的技術都進行了深入分析,而對如何集成EJB、JMX、JCA等不常用的功能完全不涉及,很好地做到了實用性和深入性的統一。
? 理論透徹,面向實踐:本書在透徹分析原理、講解技術知識點的同時,特別注意與實際應用的結合。筆者將自身豐富的實戰經驗糅合到全書的相關知識點中,很好地做到了知識講解和實踐經驗的結合,讓讀者在掌握純技術知識的同時能夠對如何活用技術做到胸有成竹。如筆者在第16章講解任務調度的內容時,專門辟出16.6節講解實際應用中任務調度的使用經驗;在第18章中講述使用實戰項目開發時,專門通過18.11節講述了筆者在實際項目中所總結的項目配置文件及數據源的規劃方案。此外,我們還適時提供了“實戰經驗”的插文,它們在不影響上下文連貫性的同時讓讀者學到了相關技術的實戰經驗。諸如此類的以實際應用為導向的內容貫穿全書,這是本書區別于其他書籍的特色之一。
? 代碼簡潔,圖例豐富:全書代碼在排版布局及內容剪裁上頗費心思,實例代碼重點關注當前知識點涉及的內容,弱化邊緣代碼,并采用特殊的排版方式適時添加簡明扼要的注釋,方便程序代碼的閱讀和重點內容的把握。全書擁有大量精美的圖表,這些圖表很好地解構了上下文中的一些知識難點,大大提高了可讀性,降低了理解的難度。
? 注重趣味,輕松閱讀:由于技術書籍的嚴謹性、知識性特點,閱讀技術書籍往往是枯燥乏味的,更遑論趣味性。筆者對此深有感觸,為尋求一些突破,我們在全書大部分章節都精心設計了一個“輕松一刻”環節。它們和上下文內容存在某種程度的關聯性,但其本身是一段趣味性的短文,以便在增強全書趣味性的同時還為讀者提供了另一個思考問題的角度。
? 相關知識,一網打盡:Spring不但本身涉及眾多Java技術,其集成的第三方技術本身也涵蓋了豐富的知識。我們在介紹Spring相關技術時,都會簡明扼要地講解相關聯的基礎知識,其中包括Java的新知識和被集成技術的知識,而不是在完全脫離背景知識的情況下孤立講解Spring的知識。
? 通力合作,傾力打造:本書從籌劃到改版完成,歷時近8個月。我們交叉審核,多次優化重構,為保證全書質量,多次向出版社申請延遲提交稿件,直到2016年6月才完成所有稿件。
本書結構
本書分為5篇。第1篇為基礎篇,包括第1∼3章,講解Spring概述性知識,以便讀者快速建立對Spring的整體認識,能夠使用Spring快速開發一個簡單的項目,而更多深入的知識則在后續篇章中展開。第2篇為核心篇,包括第4∼9章,講解Spring的IoC、AOP及SpEL的知識,這些知識是Spring的核心,也是Spring所有衍生服務及功能的基石。第3篇為數據篇,包括第10∼14章,講解Spring的各種數據訪問技術及事務管理的內容,對事務管理的實現機制和各種疑難問題進行剖析。第4篇為應用篇,包括第15∼18章,講解數據緩存、任務調度、Web開發的內容,對于企業應用開發來說,數據緩存及任務調度是兩個無法回避的問題,需要重點學習和掌握;此外,本篇還精心設計了一個實戰案例,包含需求分析、數據庫設計、項目開發、代碼測試、應用部署的整體過程,讓讀者在項目的實戰中整體串接Spring的知識點。第5篇為提高篇,包括第19章和第20章,講解Spring OXM及單元測試的內容;全書工程代碼放在本書配套網盤中,請讀者下載網盤內容閱讀,本書網盤下載地址如下。
百度云盤:http://pan.baidu.com/s/1boCl3d1。
下面簡要介紹一下每章的內容。
第1章:對Spring框架進行了整體性的概述,可使讀者快速建立起對Spring整體性的認識。
第2章:通過一個簡單的例子展現開發Spring Web應用的整體過程,通過這個實例,讀者可以快速跨入Spring Web應用的世界。
第3章:Spring Boot的設計目的是用來簡化新Spring應用的搭建和開發過程,本章通過實例向讀者講述了Spring Boot的使用技巧。
第4章:講解了Spring IoC容器的知識,通過具體的實例詳細地講解了IoC概念;同時,對Spring框架的三個最重要的框架級接口進行了剖析,并對Bean的生命周期進行了講解。
第5章:講解了如何在Spring配置文件中使用各種配置方式配置Bean的內容,并對各個配置項的意義進行了深入說明。
第6章:對Spring容器進行了解構,從內部探究Spring容器的體系結構和運行流程。此外,還對Spring容器一些高級主題進行了深入闡述。
第7章:從Spring AOP的底層實現技術入手,一步步深入到Spring AOP的內核中,分析它的底層結構和具體實現。
第8章:對如何使用基于AspectJ配置AOP的知識進行了深入分析,包括使用XML Schema配置文件、使用注解進行配置等內容。
第9章:SpEL不僅僅是一個動態語言,而且Spring容器的很多配置都直接依賴于SpEL工作,因此掌握SpEL是掌握Spring配置的必修課程。
第10章:介紹了Spring所提供的DAO封裝層,包括Spring DAO的異常體系、數據訪問模板等內容。
第11章:聲明式事務配置是Spring的一項重要功能,本章介紹了Spring事務管理的工作機制,以及通過XML、注解等方式進行事務管理配置等內容。
第12章:對實際應用中Spring事務管理的各種疑難問題進行了透徹剖析,讓讀者對Spring事務管理不再有云遮霧罩的感覺。
第13章:講解了如何使用Spring JDBC進行數據訪問操作,還重點講述了LOB字段處理、主鍵的產生和獲取等難點知識。
第14章:講解了如何在Spring中集成Hibernate、MyBatis等數據訪問框架,同時,讀者還將學到ORM框架的混用和DAO層設計的知識。
第15章:數據緩存已經成為提高系統運行性能的一個重要方法,本章講解了Spring Cache如何通過注解方式進行透明化數據緩存。
第16章:本章重點講解了在Spring中如何使用Quartz進行任務調度,同時還涉及使用JDK Timer和JDK 5.0執行器等知識。
第17章:對Spring MVC框架進行了詳細介紹,對REST風格的編程方式進行了重點講解,同時還對Spring的校驗和格式化框架如何與Spring MVC整合進行了說明。
第18章:以一個實際的項目為藍本,帶領讀者從項目需求分析、項目設計、代碼開發、單元測試直到應用部署體驗一次接近實戰的整體項目開發過程。
第19章:介紹Spring OXM的多種實現技術,同時對XML技術進行了整體說明。
第20章:有別于一般書籍的單元測試內容,本書以當前最具實戰性的TestNG+ Unitils+ Mockito復合測試框架對測試基于數據庫的Web應用進行了深入講解。
如何使用本書
由于程序開發是一項實踐性極強的工作,只有親身體驗才能掌握其真諦,因此我們強烈建議讀者使用本書網盤的工程代碼進行同步學習。本書項目基于Java 7.0+,請讀者先安裝好Java SDK 7.0+;開發工具使用Intllij IDEA,可從http://www.jetbrains.com/ idea下載免費社區版進行安裝。請下載本書配套網盤的內容,建議下載到本地的D: masterspring目錄下。本書所有章節對應的工程項目均以Maven方式組織,請將網盤toolssettings.xml復制到C:Users<操作系統用戶名>.m2目錄下。在settings.xml中,我們使用了國內的oschina Maven公共倉庫,下載依賴構件包速度很快;否則,Maven項目將默認從國外的中央倉庫下載,速度很慢。
當學習到某個章節時,請在IDEA中打開對應章節的工程項目,并依照下面的步驟創建章節所對應的IDEA工程項目:
(1)依次選擇File→New→Project From Existing Sources...命令,打開Select File or Directory to Import對話框。
(2)選擇要打開的D:masterspringchapterX項目工程,打開Import Project向導。
(3)選擇Import project from external model選項并在列表中選擇Maven,然后連續單擊Next按鈕,按向導指示創建章節的Maven項目工程(注意SDK選擇1.7)。
(4)由于本書工程項目采用UTF-8編碼,所以在創建完項目工程后,請按Ctrl+Alt+S組合鍵打開Setting對話框,找到Editor→File Encodings,將IDE Encoding、Project Encoding及Default encoding for properties files三項都設置為UTF-8;否則將會因編碼問題導致編譯失敗。
本書很多章節都用到了數據庫,因此請在本機安裝MySQL 5.0+,本書假設MySQL的root密碼為123456。在每個需要數據庫訪問的項目工程中都擁有一個schema目錄,其下是數據庫初始化SQL腳本,請先執行腳本再運行章節對應的代碼。
本書插文
本書會適時加入一些提示、實戰經驗和輕松一刻的小段插文,在不打斷行文連續性的同時提供一些有益的開發經驗、使用技巧并增強閱讀的趣味性。這些插文都帶有一個小圖標加以凸顯,說明如下。
提示:在上下文中可能存在一些讀者容易忽視或容易犯錯的地方,在提示信息中給予針對性的幫助信息
實戰經驗:筆者將多年的開發實戰經驗適時介紹給大家。這些知識往往是不能從一般的書籍或資料中獲得的。本書會適時地在行文中將這些實戰經驗分享出來,相信可以使讀者少走一些彎路
輕松一刻:為了增強技術書籍閱讀的趣味性,全書每章都有一到兩個“輕松一刻”的短文。它們和上下文內容都存在某種程度的關聯性,不但可為閱讀帶來了趣味性,還可以啟發讀者思考
此外,由于Spring 4.x擁有多個版本,為了保持行文的簡潔,除非特別指出,本書的Spring或Spring 4.0即代表當前的最新版本(Spring 4.2.x)。
如何與作者聯系
由于Spring內容涵蓋面寬廣,涉及的內容非常多,同時由于作者水平有限,錯誤之處在所難免。我們不但歡迎讀者朋友來信交流,更期待各界高手、專家就不足之處給予賜教和斧正。

陳雄華
2016年5月22日于廈門
內容簡介:

Spring 4.0是Spring在積蓄4年后,隆重推出的一個重大升級版本,進一步加強了Spring作為Java領域第一開源平臺的翹楚地位。Spring 4.0引入了眾多Java開發者翹首以盼的基于Groovy Bean的配置、HTML 5/WebSocket支持等新功能,全面支持Java 8.0,最低要求是Java 6.0。這些新功能實用性強、易用性高,可大幅降低Java應用,特別是Java Web應用開發的難度,同時有效提升應用開發的優雅性。本書是在《精通Spring 3.x——企業應用開發詳解》的基礎上,歷時一年的重大調整改版而成的,延續了上一版本“追求深度,注重原理,不停留在技術表面”的寫作風格,力求使讀者在熟練使用Spring的各項功能的同時透徹理解Spring的內部實現,真正做到知其然并知其所以然。此外,本書重點突出了“實戰性”的主題,力求使全書內容體現“從實際項目中來,到實際項目中去”的寫作原則。

目錄:

? 第1篇 基礎篇
第1章 Spring概述 2
1.1 認識Spring 2
1.2 關于SpringSource 4
1.3 Spring帶給我們什么 5
1.4 Spring體系結構 6
1.5 Spring對Java版本的要求 8
1.6 Spring 4.0新特性 8
1.6.1 全面支持Java 8.0 9
1.6.2 核心容器的增強 11
1.6.3 支持用Groovy定義Bean 12
1.6.4 Web的增強 12
1.6.5 支持WebSocket 12
1.6.6 測試的增強 13
1.6.7 其他 13
1.7 Spring子項目 13
1.8 如何獲取Spring 15
1.9 小結 16
第2章 快速入門 17
2.1 實例概述 17
2.1.1 比Hello World更適用的實例 18
2.1.2 實例功能簡介 18
2.2 環境準備 20
2.2.1 構建工具Maven 20
2.2.2 創建庫表 22
2.2.3 建立工程 23
2.2.4 類包及Spring配置文件規劃 28
2.3 持久層 29
2.3.1 建立領域對象 29
2.3.2 UserDao 30
2.3.3 LoginLogDao 33
2.3.4 在Spring中裝配DAO 34
2.4 業務層 35
2.4.1 UserService 35
2.4.2 在Spring中裝配Service 37
2.4.3 單元測試 38
2.5 展現層 40
2.5.1 配置Spring MVC框架 40
2.5.2 處理登錄請求 42
2.5.3 JSP視圖頁面 44
2.6 運行Web應用 46
2.7 小結 48
第3章 Spring Boot 49
3.1 Spring Boot概覽 49
3.1.1 Spring Boot發展背景 50
3.1.2 Spring Boot特點 50
3.1.3 Spring Boot啟動器 50
3.2 快速入門 52
3.3 安裝配置 54
3.3.1 基于Maven環境配置 54
3.3.2 基于Gradle環境配置 56
3.3.3 基于Spring Boot CLI環境
配置 57
3.3.4 代碼包結構規劃 58
3.4 持久層 59
3.4.1 初始化配置 59
3.4.2 UserDao 61
3.5 業務層 62
3.6 展現層 64
3.6.1 配置pom.xml依賴 64
3.6.2 配置Spring MVC框架 65
3.6.3 處理登錄請求 65
3.7 運維支持 67
3.8 小結 70
? 第2篇 核心篇
第4章 IoC容器 72
4.1 IoC概述 72
4.1.1 通過實例理解IoC的概念 73
4.1.2 IoC的類型 75
4.1.3 通過容器完成依賴關系的
注入 77
4.2 相關Java基礎知識 78
4.2.1 簡單實例 78
4.2.2 類裝載器ClassLoader 80
4.2.3 Java反射機制 83
4.3 資源訪問利器 85
4.3.1 資源抽象接口 85
4.3.2 資源加載 88
4.4 BeanFactory和ApplicationContext 91
4.4.1 BeanFactory介紹 92
4.4.2 ApplicationContext介紹 94
4.4.3 父子容器 103
4.5 Bean的生命周期 103
4.5.1 BeanFactory中Bean的生命
周期 103
4.5.2 ApplicationContext中Bean
的生命周期 112
4.6 小結 114
第5章 在IoC容器中裝配Bean 115
5.1 Spring配置概述 116
5.1.1 Spring容器高層視圖 116
5.1.2 基于XML的配置 117
5.2 Bean基本配置 120
5.2.1 裝配一個Bean 120
5.2.2 Bean的命名 120
5.3 依賴注入 121
5.3.1 屬性注入 121
5.3.2 構造函數注入 124
5.3.3 工廠方法注入 128
5.3.4 選擇注入方式的考量 130
5.4 注入參數詳解 130
5.4.1 字面值 130
5.4.2 引用其他Bean 131
5.4.3 內部Bean 133
5.4.4 null值 133
5.4.5 級聯屬性 134
5.4.6 集合類型屬性 134
5.4.7 簡化配置方式 138
5.4.8 自動裝配 141
5.5 方法注入 142
5.5.1 lookup方法注入 142
5.5.2 方法替換 143
5.6 <bean>之間的關系 144
5.6.1 繼承 144
5.6.2 依賴 145
5.6.3 引用 146
5.7 整合多個配置文件 147
5.8 Bean作用域 148
5.8.1 singleton作用域 148
5.8.2 prototype作用域 149
5.8.3 與Web應用環境相關的Bean
作用域 150
5.8.4 作用域依賴問題 152
5.9 FactoryBean 153
5.10 基于注解的配置 155
5.10.1 使用注解定義Bean 155
5.10.2 掃描注解定義的Bean 156
5.10.3 自動裝配Bean 157
5.10.4 Bean作用范圍及生命過程
方法 162
5.11 基于Java類的配置 164
5.11.1 使用Java類提供Bean定義
信息 164
5.11.2 使用基于Java類的配置信息
啟動Spring容器 167
5.12 基于Groovy DSL的配置 169
5.12.1 使用Groovy DSL提供Bean
定義信息 169
5.12.2 使用GenericGroovyApplication
Context啟動Spring容器 171
5.13 通過編碼方式動態添加Bean 172
5.13.1 通過DefaultListableBean
Factory 172
5.13.2 擴展自定義標簽 173
5.14 不同配置方式比較 175
5.15 小結 177
第6章 Spring容器高級主題 178
6.1 Spring容器技術內幕 178
6.1.1 內部工作機制 179
6.1.2 BeanDefinition 182
6.1.3 InstantiationStrategy 183
6.1.4 BeanWrapper 183
6.2 屬性編輯器 184
6.2.1 JavaBean的編輯器 185
6.2.2 Spring默認屬性編輯器 188
6.2.3 自定義屬性編輯器 189
6.3 使用外部屬性文件 192
6.3.1 PropertyPlaceholderConfigurer
屬性文件 192
6.3.2 使用加密的屬性文件 195
6.3.3 屬性文件自身的引用 198
6.4 引用Bean的屬性值 199
6.5 國際化信息 201
6.5.1 基礎知識 201
6.5.2 MessageSource 206
6.5.3 容器級的國際化信息資源 209
6.6 容器事件 210
6.6.1 Spring事件類結構 211
6.6.2 解構Spring事件體系的具體
實現 213
6.6.3 一個實例 214
6.7 小結 215
第7章 Spring AOP基礎 216
7.1 AOP概述 216
7.1.1 AOP到底是什么 217
7.1.2 AOP術語 219
7.1.3 AOP的實現者 221
7.2 基礎知識 222
7.2.1 帶有橫切邏輯的實例 222
7.2.2 JDK動態代理 224
7.2.3 CGLib動態代理 228
7.2.4 AOP聯盟 229
7.2.5 代理知識小結 230
7.3 創建增強類 230
7.3.1 增強類型 230
7.3.2 前置增強 231
7.3.3 后置增強 235
7.3.4 環繞增強 236
7.3.5 異常拋出增強 237
7.3.6 引介增強 239
7.4 創建切面 243
7.4.1 切點類型 243
7.4.2 切面類型 244
7.4.3 靜態普通方法名匹配切面 246
7.4.4 靜態正則表達式方法匹配
切面 248
7.4.5 動態切面 251
7.4.6 流程切面 254
7.4.7 復合切點切面 256
7.4.8 引介切面 258
7.5 自動創建代理 259
7.5.1 實現類介紹 259
7.5.2 BeanNameAutoProxyCreator 260
7.5.3 DefaultAdvisorAutoProxy
Creator 261
7.5.4 AOP無法增強疑難問題
剖析 262
7.6 小結 267
第8章 基于@AspectJ和Schema的
AOP 269
8.1 Spring對AOP的支持 269
8.2 Java 5.0注解知識快速進階 270
8.2.1 了解注解 270
8.2.2 一個簡單的注解類 271
8.2.3 使用注解 272
8.2.4 訪問注解 273
8.3 著手使用@AspectJ 274
8.3.1 使用前的準備 275
8.3.2 一個簡單的例子 275
8.3.3 如何通過配置使用@AspectJ
切面 277
8.4 @AspectJ語法基礎 278
8.4.1 切點表達式函數 278
8.4.2 在函數入參中使用通配符 279
8.4.3 邏輯運算符 280
8.4.4 不同增強類型 281
8.4.5 引介增強用法 282
8.5 切點函數詳解 283
8.5.1 @annotation() 284
8.5.2 execution() 285
8.5.3 args()和@args() 287
8.5.4 within() 288
8.5.5 @within()和@target() 289
8.5.6 target()和this() 290
8.6 @AspectJ進階 291
8.6.1 切點復合運算 292
8.6.2 命名切點 292
8.6.3 增強織入的順序 294
8.6.4 訪問連接點信息 294
8.6.5 綁定連接點方法入參 295
8.6.6 綁定代理對象 297
8.6.7 綁定類注解對象 298
8.6.8 綁定返回值 299
8.6.9 綁定拋出的異常 299
8.7 基于Schema配置切面 300
8.7.1 一個簡單切面的配置 300
8.7.2 配置命名切點 302
8.7.3 各種增強類型的配置 303
8.7.4 綁定連接點信息 305
8.7.5 Advisor配置 306
8.8 混合切面類型 307
8.8.1 混合使用各種切面類型 308
8.8.2 各種切面類型總結 308
8.9 其他 309
8.9.1 JVM Class文件字節碼轉換
基礎知識 309
8.9.2 使用LTW織入切面 311
8.10 小結 314
第9章 Spring SpEL 316
9.1 JVM動態語言 316
9.2 SpEL表達式概述 318
9.3 SpEL核心接口 319
9.3.1 EvaluationContext接口 320
9.3.2 SpEL編譯器 321
9.4 SpEL基礎表達式 323
9.4.1 文本字符解析 323
9.4.2 對象屬性解析 323
9.4.3 數組、集合類型解析 324
9.4.4 方法解析 326
9.4.5 操作符解析 327
9.4.6 安全導航操作符 329
9.4.7 三元操作符 330
9.4.8 Elvis操作符 331
9.4.9 賦值、類型、構造器、變量 332
9.4.10 集合過濾 335
9.4.11 集合轉換 335
9.5 在Spring中使用SpEL 336
9.5.1 基于XML的配置 336
9.5.2 基于注解的配置 337
9.6 小結 338
? 第3篇 數據篇
第10章 Spring對DAO的支持 340
10.1 Spring的DAO理念 340
10.2 統一的異常體系 341
10.2.1 Spring的DAO異常體系 341
10.2.2 JDBC的異常轉換器 343
10.2.3 其他持久化技術的異常
轉換器 344
10.3 統一數據訪問模板 344
10.3.1 使用模板和回調機制 345
10.3.2 Spring為不同持久化技術
所提供的模板類 347
10.4 數據源 348
10.4.1 配置一個數據源 348
10.4.2 獲取JNDI數據源 352
10.4.3 Spring的數據源實現類 353
10.5 小結 353
第11章 Spring的事務管理 355
11.1 數據庫事務基礎知識 355
11.1.1 何為數據庫事務 356
11.1.2 數據并發的問題 357
11.1.3 數據庫鎖機制 359
11.1.4 事務隔離級別 360
11.1.5 JDBC對事務的支持 361
11.2 ThreadLocal基礎知識 362
11.2.1 ThreadLocal是什么 363
11.2.2 ThreadLocal的接口方法 363
11.2.3 一個TheadLocal實例 364
11.2.4 與Thread同步機制的比較 366
11.2.5 Spring使用ThreadLocal解決
線程安全問題 366
11.3 Spring對事務管理的支持 368
11.3.1 事務管理關鍵抽象 369
11.3.2 Spring的事務管理器實現類 371
11.3.3 事務同步管理器 374
11.3.4 事務傳播行為 375
11.4 編程式的事務管理 376
11.5 使用XML配置聲明式事務 377
11.5.1 一個將被實施事務增強的
服務接口 379
11.5.2 使用原始的TransactionProxy
FactoryBean 379
11.5.3 基于aop/tx命名空間的配置 382
11.6 使用注解配置聲明式事務 385
11.6.1 使用@Transactional注解 385
11.6.2 通過AspectJ LTW引入事務
切面 389
11.7 集成特定的應用服務器 390
11.7.1 BEA WebLogic 390
11.7.2 WebSphere 390
11.8 小結 390
第12章 Spring的事務管理難點剖析 392
12.1 DAO和事務管理的牽絆 393
12.1.1 JDBC訪問數據庫 393
12.1.2 Hibernate訪問數據庫 395
12.2 應用分層的迷惑 398
12.3 事務方法嵌套調用的迷茫 401
12.3.1 Spring事務傳播機制回顧 401
12.3.2 相互嵌套的服務方法 402
12.4 多線程的困惑 405
12.4.1 Spring通過單實例化Bean
簡化多線程問題 405
12.4.2 啟動獨立線程調用事務
方法 405
12.5 聯合軍種作戰的混亂 408
12.5.1 Spring事務管理器的應對 408
12.5.2 Hibernate+Spring JDBC
混合框架的事務管理 408
12.6 特殊方法成漏網之魚 412
12.6.1 哪些方法不能實施Spring
AOP事務 412
12.6.2 事務增強遺漏實例 413
12.7 數據連接泄露 416
12.7.1 底層連接資源的訪問問題 416
12.7.2 Spring JDBC數據連接泄露 417
12.7.3 事務環境下通過DataSource
Utils獲取數據連接 420
12.7.4 無事務環境下通過DataSource
Utils獲取數據連接 422
12.7.5 JdbcTemplate如何做到對連接
泄露的免疫 424
12.7.6 使用TransactionAwareData
SourceProxy 425
12.7.7 其他數據訪問技術的等價類 426
12.8 小結 426
第13章 使用Spring JDBC訪問
數據庫 428
13.1 使用Spring JDBC 428
13.1.1 JdbcTemplate小試牛刀 429
13.1.2 在DAO中使用Jdbc
Template 429
13.2 基本的數據操作 431
13.2.1 更改數據 431
13.2.2 返回數據庫的表自增主鍵值 434
13.2.3 批量更改數據 436
13.2.4 查詢數據 437
13.2.5 查詢單值數據 440
13.2.6 調用存儲過程 442
13.3 BLOB/CLOB類型數據的操作 444
13.3.1 如何獲取本地數據連接 445
13.3.2 相關的操作接口 446
13.3.3 插入LOB類型的數據 448
13.3.4 以塊數據方式讀取LOB
數據 450
13.3.5 以流數據方式讀取LOB
數據 451
13.4 自增鍵和行集 452
13.4.1 自增鍵的使用 452
13.4.2 如何規劃主鍵方案 454
13.4.3 以行集返回數據 456
13.5 NamedParameterJdbcTemplate
模板類 456
13.6 小結 459
第14章 整合其他ORM框架 460
14.1 Spring整合ORM技術 460
14.2 在Spring中使用Hibernate 462
14.2.1 配置SessionFactory 462
14.2.2 使用HibernateTemplate 465
14.2.3 處理LOB類型的數據 469
14.2.4 添加Hibernate事件監聽器 470
14.2.5 使用原生的Hibernate API 471
14.2.6 使用注解配置 472
14.2.7 事務處理 474
14.2.8 延遲加載問題 475
14.3 在Spring中使用MyBatis 476
14.3.1 配置SqlMapClient 476
14.3.2 在Spring中配置MyBatis 478
14.3.3 編寫MyBatis的DAO 479
14.4 DAO層設計 482
14.4.1 DAO基類設計 482
14.4.2 查詢接口方法設計 484
14.4.3 分頁查詢接口設計 486
14.5 小結 487
? 第4篇 應用篇
第15章 Spring Cache 490
15.1 緩存概述 490
15.1.1 緩存的概念 490
15.1.2 使用Spring Cache 493
15.2 掌握Spring Cache抽象 498
15.2.1 緩存注解 498
15.2.2 緩存管理器 504
15.2.3 使用SpEL表達式 506
15.2.4 基于XML的Cache聲明 506
15.2.5 以編程方式初始化緩存 507
15.2.6 自定義緩存注解 509
15.3 配置Cache存儲 509
15.3.1 EhCache 510
15.3.2 Guava 510
15.3.3 HazelCast 511
15.3.4 GemFire 511
15.3.5 JSR-107 Cache 511
15.4 實戰經驗 513
15.5 小結 514
第16章 任務調度和異步執行器 516
16.1 任務調度概述 516
16.2 Quartz快速進階 517
16.2.1 Quartz基礎結構 518
16.2.2 使用SimpleTrigger 520
16.2.3 使用CronTrigger 522
16.2.4 使用Calendar 526
16.2.5 任務調度信息存儲 527
16.3 在Spring中使用Quartz 530
16.3.1 創建JobDetail 530
16.3.2 創建Trigger 533
16.3.3 創建Scheduler 534
16.4 在Spring中使用JDK Timer 536
16.4.1 Timer和TimerTask 536
16.4.2 Spring對Java Timer的支持 539
16.5 Spring對Java 5.0 Executor的
支持 540
16.5.1 了解Java 5.0的Executor 541
16.5.2 Spring對Executor所提供的
抽象 543
16.6 實際應用中的任務調度 544
16.6.1 如何產生任務 545
16.6.2 任務調度對應用程序集群的
影響 547
16.6.3 任務調度云 547
16.6.4 Web應用程序中調度器的
啟動和關閉問題 549
16.7 小結 552
第17章 Spring MVC 553
17.1 Spring MVC體系概述 554
17.1.1 體系結構 554
17.1.2 配置DispatcherServlet 555
17.1.3 一個簡單的實例 560
17.2 注解驅動的控制器 565
17.2.1 使用@RequestMapping
映射請求 565
17.2.2 請求處理方法簽名 569
17.2.3 使用矩陣變量綁定參數 570
17.2.4 請求處理方法簽名詳細說明 571
17.2.5 使用HttpMessageConverter
<T> 575
17.2.6 使用@RestController和AsyncRestTemplate 584
17.2.7 處理模型數據 586
17.3 處理方法的數據綁定 591
17.3.1 數據綁定流程剖析 592
17.3.2 數據轉換 592
17.3.3 數據格式化 598
17.3.4 數據校驗 602
17.4 視圖和視圖解析器 611
17.4.1 認識視圖 611
17.4.2 認識視圖解析器 612
17.4.3 JSP和JSTL 613
17.4.4 模板視圖 618
17.4.5 Excel 621
17.4.6 PDF 623
17.4.7 輸出XML 625
17.4.8 輸出JSON 626
17.4.9 使用XmlViewResolver 626
17.4.10 使用ResourceBundleView
Resolver 627
17.4.11 混合使用多種視圖技術 628
17.5 本地化解析 630
17.5.1 本地化的概念 630
17.5.2 使用CookieLocaleResolver 631
17.5.3 使用SessionLocaleResolver 632
17.5.4 使用LocaleChange
Interceptor 632
17.6 文件上傳 633
17.6.1 配置MultipartResolver 633
17.6.2 編寫控制器和文件上傳表單
頁面 633
17.7 WebSocket支持 634
17.7.1 使用WebSocket 634
17.7.2 WebSocket的限制 638
17.8 雜項 639
17.8.1 靜態資源處理 639
17.8.2 裝配攔截器 643
17.8.3 異常處理 644
17.8.4 RequestContextHolder的
使用 646
17.9 小結 646
第18章 實戰案例開發 648
18.1 論壇案例概述 648
18.1.1 論壇整體功能結構 648
18.1.2 論壇用例描述 649
18.1.3 主要功能流程描述 651
18.2 系統設計 655
18.2.1 技術框架選擇 655
18.2.2 采用Maven構建項目 656
18.2.3 單元測試類包結構規劃 657
18.2.4 系統架構圖 658
18.2.5 PO類設計 658
18.2.6 持久層設計 659
18.2.7 服務層設計 660
18.2.8 Web層設計 661
18.2.9 數據庫設計 662
18.3 開發前的準備 663
18.4 持久層開發 664
18.4.1 PO類 664
18.4.2 DAO基類 666
18.4.3 通過擴展基類定義DAO類 670
18.4.4 DAO Bean的裝配 672
18.4.5 使用Hibernate二級緩存 673
18.5 對持久層進行測試 675
18.5.1 配置Unitils測試環境 675
18.5.2 準備測試數據庫及測試
數據 676
18.5.3 編寫DAO測試基類 677
18.5.4 編寫BoardDao測試用例 678
18.6 服務層開發 680
18.6.1 UserService的開發 680
18.6.2 ForumService的開發 681
18.6.3 服務類Bean的裝配 683
18.7 對服務層進行測試 684
18.7.1 編寫Service測試基類 685
18.7.2 編寫ForumService測試
用例 685
18.8 Web層開發 687
18.8.1 BaseController的基類 687
18.8.2 用戶登錄和注銷 689
18.8.3 用戶注冊 691
18.8.4 論壇管理 692
18.8.5 論壇普通功能 694
18.8.6 分頁顯示論壇版塊的主題
帖子 696
18.8.7 web.xml配置 700
18.8.8 Spring MVC配置 702
18.9 對Web層進行測試 703
18.9.1 編寫Web測試基類 703
18.9.2 編寫ForumManageController
測試用例 704
18.10 開發環境部署 705
18.11 項目配置實戰經驗 708
18.11.1 “傳統的”Web項目屬性
文件 708
18.11.2 如何規劃便于部署的Web
項目屬性文件 709
18.11.3 數據源的配置 710
18.12 小結 712
? 第5篇 提高篇
第19章 Spring OXM 714
19.1 認識XML解析技術 714
19.1.1 什么是XML 714
19.1.2 XML的處理技術 715
19.2 XML處理利器:XStream 717
19.2.1 XStream概述 717
19.2.2 快速入門 718
19.2.3 使用XStream別名 720
19.2.4 XStream轉換器 721
19.2.5 XStream注解 723
19.2.6 流化對象 725
19.2.7 持久化API 726
19.2.8 額外功能:處理JSON 727
19.3 其他常見的O/X Mapping開源
項目 729
19.3.1 JAXB 729
19.3.2 Castor 733
19.3.3 JiBX 738
19.3.4 總結比較 741
19.4 與Spring OXM整合 742
19.4.1 Spring OXM概述 742
19.4.2 整合OXM實現者 744
19.4.3 如何在Spring中進行配置 744
19.4.4 Spring OXM簡單實例 747
19.5 小結 749
第20章 實戰型單元測試 750
20.1 單元測試概述 751
20.1.1 為什么需要單元測試 751
20.1.2 單元測試之誤解 752
20.1.3 單元測試之困境 754
20.1.4 單元測試基本概念 755
20.2 TestNG快速進階 757
20.2.1 TestNG概述 757
20.2.2 TestNG生命周期 758
20.2.3 使用TestNG 758
20.3 模擬利器Mockito 763
20.3.1 模擬測試概述 763
20.3.2 創建Mock對象 763

20.3.3 設定Mock對象的期望行為
及返回值 764
20.3.4 驗證交互行為 766
20.4 測試整合之王Unitils 767
20.4.1 Unitils概述 767
20.4.2 集成Spring 770
20.4.3 集成Hibernate 773
20.4.4 集成DbUnit 774
20.4.5 自定義擴展模塊 775
20.5 使用Unitils測試DAO層 776
20.5.1 數據庫測試的難點 776
20.5.2 擴展DbUnit用Excel準備
數據 776
20.5.3 測試實戰 779
20.6 使用Unitils測試Service層 789
20.7 測試Web層 794
20.7.1 對LoginController進行單元
測試 794
20.7.2 使用Spring Servlet API模擬
對象 795
20.7.3 使用Spring RestTemplate
測試 797
20.8 小結 798
序: