《精通Spring--Java輕量級架構開發實踐》是2006年人民郵電出版社出版的圖書,作者是孟劼。
基本介紹
- 書名:精通Spring--Java輕量級架構開發實踐
- ISBN:711515029x
- 出版社:人民郵電出版社
- 出版時間:2006 年10月
基本信息,內容簡介,目錄,
基本信息
作者: 孟劼 叢書名: 程式開發套用精通叢書.流行的Java
出版社:人民郵電出版社
ISBN:711515029x
上架時間:2006-8-25
出版日期:2006 年10月
開本:16開
頁碼:593
版次:1-1
內容簡介
本書由淺入深,循序漸進地介紹了開源套用框架Spring的開發實踐和思想。全書共分20章,內容涵蓋了Spring的基礎知識體系、獲取和部署方法、背後的先進核心理念、相關的部分設計模式和J2EE核心模式、核心組件Bean工廠的使用、Spring風格的面向方面編程、各種J2EE企業級套用框架和解決方案(包括持久數據訪問、事務管理、EJB、郵件服務、時程安排、Web MVC框架、表現層視圖技術、JMX遠程方案等)、Spring和單元測試等內容。
此外本書也剖析了Spring寵物店示例,最後還討論了寵物店和Martin Fowler企業架構模式(POEAA)的關係。
本書適用於各種層面的讀者,初、中級讀者可以通過本書的示例講解,全面運用Spring;而中高級讀者也可以通過本書,深入理解Spring及其背後秉持的理念。
目錄
第1章 spring基礎知識
1.1 spring的來歷和目標
1.2 spring概覽
1.3 spring的套用場景
1.4 spring和j2ee
1.4.1 經典j2ee體系架構
1.4.2 輕量級容器
1.4.3 spring和j2ee的關係
1.5 小結
第2章 開始spring之旅
2.1 獲取spring
2.1.1 兩大開源網站簡介
2.1.2 獲取spring發布包和原始碼
2.2 spring的標準發布包和相關軟體包
2.2.1 spring標準發布包
2.2.2 spring相關軟體包
2.2.3 spring自帶範例
2.3 部署spring
2.4 spring套用初體驗
2.4.1 hello world遇到的問題
.2.4.2 使用spring對hello world進行重構
2.4.3 實現依賴注射(di)
2.4.3 重構總結
2.4.4 簡單的web應用程式hello world
2.5 小結
第3章 貫穿spring套用的核心理念
3.1 輕量級容器再探
3.1.1 容器和輕量級容器
3.1.2 需要容器的理由
3.1.3 輕量級容器的優勢
3.2 控制反轉(ioc)
3.2.1 一個簡單的例子
3.2.2 引入問題
3.2.3 使用控制反轉(inversion of control)模式
3.2.4 總結
3.3 依賴注射
3.3.1 依賴注射的幾種形式
3.3.2 使用spring 進行設值方法和構造函式注射
3.3.3 設值方法注射和構造函式注射的使用場合
3.4 面向方面編程(aspect oriented programming)
3.4.1 aop的歷史來源
3.4.2 為什麼需要aop
3.4.3 aop的重要概念
3.4.4 理解“橫切”
3.4.5 aop的實現策略
3.4.6 認識aspectj
3.4.7 安裝aspectj的運行環境
3.4.8 用j2se動態代理實現aop
3.4.9 用aspectj實現aop
3.4.10 深入理解aspectj
3.5 單元測試(unit test)
3.5.1 單元測試和junit框架
3.5.2 junit框架的三個核心概念
3.5.3 準備測試
3.5.4 添加測試代碼並進行測試
3.5.5 取得更有意義的出錯信息
3.5.6 捕捉錯誤信息
3.5.7 單元測試技巧
3.6 測試驅動開發(test driven development)
3.6.1 傳統測試的問題
3.6.2 測試驅動開發的應對策略
3.6.3 一個簡單的示例
3.6.4 總結測試驅動開發的優勢
3.7 小結
第4章 模式:spring前行的路標
4.1 模式(pattern)入門
4.1.1 什麼是模式
4.1.2 不用模式產生的問題
4.1.3 通過實例理解模式本質
4.1.4 做好準備,繼續前行
4.2 工廠模式(design pattern:factory method)的精髓
4.2.1 引入問題
4.2.2 解決方法
4.2.3 工廠模式和依賴倒置的關係
4.3 單例模式(design pattern:singleton)
4.3.1 單例模式的實現
4.3.2 單例註冊表
4.4 模板模式和策略模式(design pattern:template method and strategy)
4.4.1 模板模式
4.4.2 策略模式
4.5 代理模式(design pattern:proxy)
4.5.1 第一個代理模式的例子
4.5.2 虛擬代理(virtual proxy)
4.6 數據訪問對象模式(j2ee pattern:data access object)
4.7 模型視圖控制器模式(architecture/framework pattern:model view controller)
4.7.1 model 1和model 2簡介
4.7.2 一個model 2框架示例
4.8 框架與模式的關係
4.9 spring和工廠模式
4.9.1 spring工廠體系的另類視圖
4.9.2 spring工廠核心原理
4.10 spring和單例模式
4.11 spring的模板以及策略模式
4.11.1 spring模板模式
4.11.2 spring策略模式
4.12 spring和代理模式
4.13 spring和數據訪問對象模式
4.14 spring和mvc模式
4.15 小結
第5章 spring核心bean工廠裝配指南
5.1 核心bean工廠
5.1.1 初識bean工廠
5.1.2 擁有一份bean的基礎定義
5.1.3 使用構造函式創建bean
5.1.4 使用靜態工廠方法創建bean
5.1.5 使用實例工廠方法創建bean
5.1.6 bean的標識符
5.1.7 是否使用singleton
5.2 裝配各種套用協作對象:bean
5.2.1 設定bean的屬性和協作者
5.2.2 bean的依賴決議
5.2.3 構造子參數決議
5.2.4 自動裝配(autowiring)
5.2.5 依賴檢查
5.3 bean屬性和構造函式參數的細節
5.3.1 使用value元素設定屬性
5.3.2 使用null元素設定空值
5.3.3 使用collection(集合)元素定義集合
5.3.4 通過嵌套bean元素來定義內部bean(innerbean)
5.3.5 使用idref元素預檢錯誤
5.3.6 使用ref元素設定依賴
5.3.7 value與ref的簡寫式
5.3.8 使用depends-on屬性強制依賴
5.4 方法也可以被注射
5.4.1 使用lookup方法注射
5.4.2 替換任意方法
5.5 定製bean的一些原生屬性
5.5.1 生命周期接口
5.5.2 讓bean知道自己的身份
5.5.3 什麼是factorybean
5.6 父和子bean的定義
5.7 使用後處理器(post-processor)
5.7.1 使用beanpostprocessor定製bean
5.7.2 使用beanfactorypostprocessor定製bean工廠
5.7.3 使用自定義的propertyeditor
5.8 小結
第6章 applicationcontext和更多特性
6.1 applicationcontext簡介
6.2 applicationcontext的擴展功能
6.2.1 資源國際化
6.2.2 事件傳播
6.2.3 底層資源和applicationcontext
6.3 在applicationcontext中客制bean的屬性和行為
6.4 使用自定義的propertyeditors
6.5 創建web套用上下文
6.6 更多的輕鬆裝配方式
6.6.1 從屬性表達式來設定bean的屬性或者構造函式參數
6.6.2 從一個欄位值來設定bean的屬性或者構造函式參數
6.6.3 調用另外一個方法並且使用其返回值(也可以沒有返回值)
6.6.4 引入其他bean的定義檔案
6.7 bean包裝器(wrapper)和屬性編輯器(propertyeditor)
6.7.1 beanwrapper簡介
6.7.2 javabean屬性的設定、獲取及嵌套
6.7.3 屬性編輯器
6.8 spring驗證機制初探
6.9 小結
第7章 spring面向方面編程(aop)基礎
7.1 spring aop基礎概念
7.1.1 aop聯盟簡介
7.1.2 spring aop功能簡介
7.1.3 spring aop概念重整
7.2 springaop編程起步
7.2.1 陳舊案例重現
7.2.2 抽離關注點,給予建議
7.2.3 劃分切入點
7.2.4 結合spring aop和ioc:聲明配置
7.3 spring aop代理和代理工廠
7.3.1 spring代理工廠簡介
7.3.2 使用proxyfactory
7.3.3 使用proxyfactorybean
7.3.4 使用proxyfactorybean暴露的屬性
7.3.5 選擇合適的aop代理
7.4 spring aop建議(advice)
7.4.1 前置建議(before advice)
7.4.2 返回後(後置)建議(after returning advice)
7.4.3 環繞攔截建議(interception around advice)
7.4.4 拋出建議(throws advice)
7.4.5 引介建議(introduction advice)
7.5 spring aop切入點(pointcut)和顧問(advisor)
7.5.1 未使用切入點存在的問題
7.5.2 引入切入點和顧問
7.5.3 初識切入點背後的classfilter和methodmatcher
7.5.4 透過methodmatcher了解靜態和動態切入點
7.5.5 靜態切入點和顧問:了解defaultpointcutadvisor
7.5.6 靜態切入點和顧問:使用staticmethodmatcherpointcut
7.5.7 靜態切入點和顧問:使用namematchmethodpointcut
7.5.8 靜態切入點和顧問:使用正則表達式切入點
7.5.9 靜態切入點和顧問:使用便利的切入點顧問(pointcutadvisor)
7.5.10 使用動態切入點(dynamic pointcut)和自定義顧問(advisor)
7.6 小結
第8章 spring面向方面編程(aop)高級套用
8.1 spring aop引介(introduction)概述
8.2 使用混入(mixin)實現引介(introduction)建議
8.2.1 引入目標對象和待織入功能接口
8.2.2 給予關鍵引介建議
8.2.3 聲明配置引介建議並測試
8.3 使用自動代理(auto proxy)
8.4 spring aop企業級服務
8.4.1 spring aop企業級服務選單
8.4.2 使用transactionproxyfactorybean提供聲明式事務管理
8.4.3 更為強大靈活的事務管理聲明方式
8.4.4 使用ejb代理
8.5 小結
第9章 j2ee的持久化數據訪問方案
9.1 傳統高效的jdbc方案
9.2 基於sql語句映射的ibatis
9.2.1 ibatis簡介
9.2.2 ibatis和高級orm工具的比較
9.2.3 ibatis的套用場合
9.2.4 ibatis示例快照
9.3 流行的orm利器hibernate
9.3.1 hibernate簡介
9.3.2 hibernate示例快照
9.4 再探數據訪問對象(dao)
9.4.1 傳統的jdbc和dao
9.4.2 ibatis和dao
9.4.3 hibernate和dao
9.5 orm方案的套用場合
9.6 寵物店背後的ibatis:sql map基本概念
9.7 寵物店背後的ibatis:xml配置檔案
9.7.1 sql map的xml配置檔案
9.7.2 使用[properties]元素引入屬性檔案
9.7.3 使用[setting]元素配置sqlmap
9.7.4 使用[typealias]元素指定別名
9.7.5 使用[transactionmanager]元素配置事務策略
9.7.6 使用[datasource]元素配置數據源
9.7.7 使用[sqlmap]元素引入sql map映射檔案
9.7.8 先行準備主控測試和子測試套件
9.8 寵物店背後的ibatis:xml映射檔案
9.8.1 sql map的xml映射檔案
9.8.2 通過mapped statement使用sql
9.8.3 使用[statements]元素指定sql語句
9.8.4 sql語句特殊規則
9.8.5 inline parameter(內聯參數)簡介
9.8.6 使用parameterclass指定參數類
9.8.7 基本類型輸入參數
9.8.8 使用resultclass指定結果類
9.8.9 使用resultmap配置映射
9.8.10 ibatis事務處理
9.8.11 第一階段火力測試,繼續前行
9.9 寵物店背後的ibatis:xml映射檔案高級特性
9.9.1 ibatis自動生成的主鍵
9.9.2 簡單的動態sql元素
9.9.3 快取mapped statement結果集
9.9.4 快取類型
9.9.5 動態mapped statement
9.9.6 運行自動測試
9.10 用hibernate創建spring寵物店的簡易進貨系統
9.10.1 spring寵物店持久層滲入
9.10.2 實現hibernate進貨dao:實體持久對象
9.10.3 實現hibernate進貨dao:映射和基本配置
9.10.4 實現hibernate進貨dao:工具類和dao實現
9.10.5 實現hibernate進貨dao:測試驗收
9.11 小結
第10章 spring和j2ee持久化數據訪問
10.1 spring對數據訪問對象(dao)的支持
10.1.1 通用的數據訪問異常
10.1.2 通用的dao抽象支持類
10.1.3 向業務對象注射dao
10.2 spring對jdbc的支持
10.2.1 jdbctemplate和數據源概述
10.2.2 使用jdbctemplate和數據源
10.2.3 對象化rdbms操作概述
10.2.4 對象化rdbms操作:使用mappingsqlquery
10.2.5 對象化rdbms操作:使用sqlupdate
10.3 spring對ibatis的支持
10.3.1 標準javabean實體和映射
10.3.2 銜接ibatis配置和dao實現
10.3.3 關鍵整合點:spring配置檔案
10.3.4 添加聲明式事務管理
10.4 spring對hibernate的支持
10.4.1 在spring上下文中配置sessionfactory
10.4.2 重建hibernate進貨dao偽實現
10.4.3 tdd又來了:規劃測試案例
10.4.4 tdd又來了:完善基礎設施
10.4.5 添加hibernatetemplate和hibernatecallback實現,交付測試
10.4.6 聲明式管理hibernate本地事務
10.4.7 聲明式管理hibernate分散式事務
10.5 小結
第11章 傳統的企業javabean(ejb)
11.1 什麼是ejb
11.2 什麼是會話bean(session bean)
11.2.1 無狀態會話bean
11.2.2 有狀態會話bean
11.2.3 何時使用會話bean
11.3 實體bean(entity bean)
11.3.1 entitybean和session bean的異同
11.3.2 容器管理的持久性(cmp)
11.3.3 何時需要entitybean
11.4 訊息驅動bean
11.4.1 message-drivenbean和session以及entity bean的異同
11.4.2 何時使用message-drivenbean
11.5 定義客戶端訪問接口
11.5.1 遠程客戶端(remote clients)
11.5.2 本地客戶端(local clients)
11.5.3 local接口和cmr(container-managed relationships)
11.5.4 遠程還是本地訪問的選用
11.5.5 方法參數和訪問方式
11.6 企業bean的內容和命名約定
11.7 ejb和jboss開發實踐
11.7.1 jboss的安裝與啟動
11.7.2 在jboss下開發部署第一個helloworld ejb
11.7.3 無狀態會話bean(stateless session bean):開發和部署
11.7.4 無狀態會話bean:效果和生命周期
11.7.5 有狀態會話bean(stateful session bean):開發和部署
11.7.6 有狀態會話bean(stateful session bean):效果和生命周期
11.8 小結
第12章 spring和ejb
12.1 概述
12.2 spring對ejb提供的支持
12.3 spring的ejb抽象訪問層
12.3.1 深入beanfactorylocator接口
12.3.2 beanfactorylocator背後資源消耗的考量
12.4 使用spring構建本地無狀態會話bean
12.4.1 提供業務契約:公共服務接口
12.4.2 提供本地和本地home接口
12.4.3 提供可測試的業務委託:pojo實現類
12.4.4 提供spring介入的企業bean實現主類
12.4.5 給出ejb組件部署描述符
12.4.6 給出spring和特定ejb容器配置,發布ejb
12.4.7 創建web客戶端,配置web套用
12.4.8 解析spring配置:slsb代理工廠bean
12.4.9 創建servlet測試slsb,發布web客戶包
12.5 使用spring構建本地有狀態會話bean
12.5.1 回顧比較,給出sfsb解決方案
12.5.2 提供業務契約:公共服務接口
12.5.3 提供本地和本地home接口
12.5.4 提供可測試的業務委託:pojo實現類
12.5.5 提供spring介入的企業bean實現主類
12.5.6 提供定製的ejb異常
12.5.7 給出部署表述符和spring配置檔案
12.5.8 創建web客戶端,配置web套用
12.5.9 解析spring配置:使用jndiobjectfactorybean自動查找jndi
12.5.10 創建servlet測試sfsb,發布web客戶包
12.6 spring眼中的ejb
12.6.1 ejb的缺點
12.6.2 spring提倡的j2ee輕量架構理念:ioc/di、aop、裝配和粘合
12.7 小結
第13章 spring和郵件服務
13.1 spring郵件抽象層
13.2 使用spring郵件抽象傳送簡單文本郵件
13.2.1 定義抽象父類模板
13.2.2 實現郵件傳送子類
13.2.3 更靈活的實現
13.2.4 特定功能的子類實現
13.3 傳送(multipart)html mime郵件的設計實現
13.3.1 分析設計和初步實現
13.3.2 定義mailmessage實體
13.3.3 功能實現和配置
13.4 傳送html/純文本mime郵件,使用接口回調
13.4.1 回調的契機
13.4.2 功能實現和配置
13.5 小結
第14章 spring和排程(scheduling)技術
14.1 排程(scheduling)原理
14.2 什麼是timer
14.2.1 執行一次
14.2.2 周期執行
14.3 spring對timer的支持
14.3.1 用spring來控制timer
14.3.2 使用methodinvokingtimertaskfactorybean
14.4 什麼是quartz
14.4.1 quartz的核心概念
14.4.2 使用simpletrigger排程
14.4.3 使用crontrigger排程
14.5 spring對quartz的支持
14.5.1 使用spring支持quartz simpletrigger排程
14.5.2 使用spring支持quartz crontrigger排程
14.6 quartz的持久化
14.6.1 quartz持久機制的核心概念
14.6.2 使用spring做一個jdbc有狀態quartz job
14.6.3 jdbc持久的有狀態和無狀態job示例運行效果解析
14.7 小結
第15章 j2ee中流行的web mvc框架
15.1 請求驅動的web mvc框架簡介
15.2 請求驅動的web mvc框架在struts中的實現
15.2.1 struts的簡介和基本web配置
15.2.2 struts的action和actionform
15.2.3 struts的核心原理
15.3 請求驅動的web mvc框架在webwork2中的實現
15.3.1 webwork2簡介
15.3.2 webwork2實現web登錄的頁面流程
15.3.3 webwork2開發實踐:配置web套用
15.3.4 webwork2開發實踐:配置驗證、實現action並綁定驗證
15.3.5 webwork2開發實踐:實現視圖
15.4 事件驅動的web mvc框架
15.4.1 簡介
15.4.2 tapestry概述
15.4.3 搭建tapestry示例運行環境
15.4.4 tapestry開發實踐:配置web套用
15.4.5 tapestry開發實踐:創建html視圖模板
15.4.6 tapestry開發實踐:創建html組件規範檔案
15.4.7 tapestry開發實踐:創建頁面類
15.4.8 無需組件規範的html視圖模板
15.5 小結
第16章 請求驅動的spring web mvc框架
16.1 spring web mvc框架簡介
16.2 分發器(dispatcherservlet)
16.3 處理器映射(handler mapping)
16.4 處理器攔截器(handlerinterceptor)
16.5 控制器簡介(controller)
16.5.1 簡單控制器
16.5.2 控制器抽象基類
16.5.3 命令控制器抽象基類
16.5.4 表單控制器簡介
16.6 普通表單控制器
16.6.1 普通表單控制器:視圖流轉
16.6.2 普通表單控制器:基本配置
16.6.3 普通表單控制器:控制器和處理流程
16.6.4 普通表單控制器:表單、領域模型和視圖
16.6.5 普通表單控制器:驗證器和錯誤採集
16.7 嚮導式表單控制器
16.7.1 嚮導式表單控制器:視圖流轉
16.7.2 嚮導式表單控制器:基本配置
16.7.3 嚮導式表單控制器:控制器、驗證器和處理流程
16.7.4 嚮導式表單控制器:表單、領域模型
16.8 模型、視圖和視圖解析(view resovling)
16.8.1 返回視圖名稱
16.8.2 保存模型屬性
16.8.3 視圖解析器和視圖抽象
16.9 小結
第17章 spring和視圖技術及web框架的集成
17.1 spring集成jsp和jstl
17.1.1 jsp和jstl簡介
17.1.2 視圖解析器
17.1.3 spring的專有標籤
17.2 spring集成xslt
17.2.1 xslt簡介
17.2.2 示例開發:需求和部署配置
17.2.3 示例開發:配置web套用
17.2.4 示例開發:把模型數據轉換成xml文檔
17.2.5 示例開發:使用xslt進行文檔轉換
17.3 spring集成pdf/excel
17.3.1 簡介
17.3.2 示例開發:部署、配置web套用和模型數據採集
17.3.3 示例開發:把模型數據轉換成pdf和excel視圖
17.4 spring集成struts
17.4.1 集成概述和手法
17.4.2 spring套用上下文裝載的兩種方式
17.4.3 使用spring 的actionsupport類整合struts
17.4.4 使用spring的delegatingrequestprocessor覆寫struts的requestprocessor
17.4.5 使用spring代理委託管理struts action
17.4.6 使用spring攔截struts action,替換寵物店的安全策略
17.5 spring集成webwork2
17.6 spring集成tapestry4
17.6.1 tapestry4背後的ioc容器:hivemind
17.6.2 部署環境和邏輯分層
17.6.3 分層重構:引入表現層的業務注射,轉移業務邏輯
17.6.4 分層重構:引入業務層,實現業務邏輯
17.6.5 分層重構:引入工具層,向tapestry套用注射spring上下文
17.6.6 集成配置:web套用配置、修改組件規範檔案
17.6.7 集成配置:通過hivemind和工具類,銜接spring
17.7 小結
第18章 spring和單元測試
18.1 模仿對象
18.2 spring mock簡介
18.2.1 spring mock web簡介
18.2.2 擴展junit框架的測試基類
18.3 spring mock快速指南
18.3.1 web組件的單元測試:搭建測試環境
18.3.2 web組件的單元測試:視圖轉發
18.3.3 web組件的單元測試:會話狀態
18.3.4 web組件的單元測試:簡單邏輯
18.3.5 事務性單元測試:使用spring mock事務基類搭建測試環境
18.4 easymock快速指南
18.4.1 easymock簡介
18.4.2組件單元測試:搭建測試環境
18.4.3組件單元測試:模擬業務接口和領域對象的互動
18.4.4組件單元測試:模擬具體類和dao的互動
18.5 結合使用spring mock和easymock
18.5.1 web組件單元測試:模擬控制器和業務接口、領域對象的互動
18.5.2 web組件單元測試:重定向測試
18.6 小結
第19章 spring和jmx技術
19.1 jmx概述
19.2 jmx的體系分層架構
19.2.1 核心組件
19.2.2 設備層(instrumentation level)
19.2.3 代理層(agent level)
19.2.4 分布服務層(distributed service level)
19.2.5附加管理協定api
19.3 jmx編程實踐
19.3.1 標準mbean編程:mbean接口和實現類
19.3.2 標準mbean編程:jmx agent
19.3.3 標準mbean編程:手工和可視化註冊mbean
19.3.5 通知模型編程
19.3.6 動態mbean和輔助元數據類編程
19.3.7 jmx連線器(connectors)編程:基本流程
19.3.8 jmx connectors編程:準備mbean套件和監聽器
19.3.9 jmx connectors編程:創建伺服器
19.3.10 jmx connectors編程:創建客戶端
19.4 spring對jmx的集成支持
19.4.1 spring集成jmx概述
19.4.2 視spring bean為jmx mbean:簡單的javabean配置
19.4.3 視spring bean為jmx mbean:客戶代碼
19.4.4 視spring bean為jmx mbean:自動偵測並且註冊mbean
19.4.5 視spring bean為jmx mbean:objectname命名策略
19.4.7 spring的jsr-160 connector支持:伺服器端配置和代碼
19.4.8 spring的jsr-160 connector支持:客戶端配置和代碼
19.4.9 sping集成jmx技術展望
19.5 小結
第20章 從spring寵物店看企業套用架構模式
20.1 企業套用架構模式(poeaa)簡介
20.1.1 什麼是企業套用架構模式
20.1.2 架構和分層
20.1.3 企業套用
20.2 寵物店和分層
20.3 寵物店和領域邏輯
20.3.1 如何組織領域邏輯
20.3.2 事務腳本
20.3.3 領域模型的基本概念
20.3.4 領域模型的持久
20.3.5 服務層
20.4 寵物店和數據源架構模式
20.5 寵物店和web表現模式
20.5.1 模板視圖
20.5.2 轉換視圖
20.5.3 兩步視圖
20.6 小結