《企業級Java EE架構設計精深實踐》是2016年6月清華大學出版社出版的圖書,作者是羅果。
基本介紹
- 書名:企業級Java EE架構設計精深實踐
- 作者:羅果
- ISBN:9787302434702
- 定價:99.80元
- 出版社:清華大學出版社
- 出版時間:2016年6月
內容簡介,圖書目錄,
內容簡介
本書全面、深入介紹了企業級Java EE設計的相關內容,內容涵蓋了Java EE架構設計的常見問題。本書每一章講解一個Java EE領域的具體問題,採用問題背景、需求分析、解決思路、架構設計、實踐示例和章節總結的順序組織內容,旨在通過分析相關領域中的常用框架及存在問題,給出相應的解決方案,提高讀者分析和解決問題的能力,並增強其架構設計的能力。
本書共13章。內容主要包括虛擬檔案系統實踐、快取實踐、檔案處理框架實踐、模板語言實踐、資料庫訪問層實踐、資料庫擴展實踐、服務層實踐、流程引擎實踐、元數據實踐、展現層開發實踐、Web擴展實踐、Tiny統一界面框架實踐和RESTful實踐。附錄中給出了相關學習資源和配置運行指南。
本書語言簡潔,思路清晰,示例豐富、完整,適合具有一定Java基礎的讀者閱讀,尤其適合從事企業級Java EE軟體架構和設計的人員閱讀。
圖書目錄
第1章 虛擬檔案系統實踐 1
1.1 背景介紹 1
1.2 什麼是VFS 1
1.3 VFS對比 2
1.3.1 Apache VFS 2
1.3.2 Tiny VFS 2
1.4 VFS框架設計思想 3
1.5 VFS實現講解 5
1.5.1 VFS管理器 5
1.5.2 SchemaProvider模式提供者 7
1.5.3 FileObject虛擬檔案 7
1.5.4 FileObjectFilter過濾接口 10
1.6 VFS套用示例 12
1.6.1 本地檔案 13
1.6.2 Jar檔案 13
1.6.3 FTP檔案 14
1.6.4 ZIP檔案 14
1.7 本章總結 15
第2章 快取實踐 16
2.1 快取簡介 16
2.1.1 問題的提出及其解決方案分析 16
2.1.2 用戶需求 19
2.1.3 Tiny快取解決思路 19
2.2 位元組碼快取設計 23
2.2.1 位元組碼操作工程 23
2.2.2 預編譯工程 27
2.2.3 快取實現工程 28
2.2.4 技術特點 31
2.3 動態代理快取設計 31
2.3.1 快取接口定義 32
2.3.2 切面快取工程 33
2.3.3 技術特點 43
2.4 快取方案實踐 43
2.4.1 位元組碼方案配置 43
2.4.2 位元組碼方案示例 44
2.4.3 動態代理方案配置 46
2.4.4 動態代理方案示例 48
2.5 本章總結 54
2.5.1 關鍵點:快取實現方案的可替換性 54
2.5.2 關鍵點:快取代碼與業務代碼的解耦 54
2.5.3 關鍵點:模板語言的套用 55
第3章 檔案處理框架實踐 56
3.1 概述 56
3.1.1 FileProcessor接口 56
3.1.2 FileResolver接口 58
3.1.3 FileMonitorProcessor類 60
3.2 基礎檔案掃描器 60
3.2.1 XStreamFileProcessor類 61
3.2.2 I18nFileProcessor類 63
3.2.3 Annotation掃描器 63
3.2.4 SpringBeansFileProcessor類 65
3.3 完整示例 66
3.3.1 單獨使用 66
3.3.2 通過配置檔案配置 66
3.4 本章總結 67
第4章 模板語言實踐 69
4.1 模板語言簡介 69
4.1.1 模板語言構成 69
4.1.2 模板語言套用場景 70
4.2 常見的模板語言 71
4.2.1 Velocity模板語言 71
4.2.2 FreeMarker模板語言 71
4.2.3 Tiny模板語言 72
4.3 Tiny模板語言設計 73
4.3.1 Tiny模板語言的構建原因 73
4.3.2 模板語言執行方式 73
4.3.3 模板語言架構 73
4.3.4 Tiny模板語言實現與擴展 74
4.3.5 模板語言語法解析 88
4.3.6 模板語言渲染機制 94
4.4 模板語言的使用 99
4.4.1 依賴配置 99
4.4.2 模板語言的配置 99
4.4.3 模板語言的Eclipse外掛程式 101
4.4.4 Hello,TinyTemplate 104
4.5 模板語言語法介紹 105
4.5.1 變數 106
4.5.2 取值表達式 107
4.5.3 Map常量 107
4.5.4 數組常量 108
4.5.5 其他表達式 109
4.5.6 索引表達式 111
4.5.7 #set指令 111
4.5.8 條件判斷 112
4.5.9 ==相等運算 113
4.5.10 AND運算 114
4.5.11 OR運算 114
4.5.12 NOT運算 114
4.5.13 循環語句 114
4.5.14 循環狀態變數 116
4.5.15 循環中斷:#break 116
4.5.16 循環繼續:# continue 117
4.5.17 while循環 117
4.5.18 模板嵌套語句#include 117
4.5.19 宏定義語句#macro 118
4.5.20 宏引入語句#import 120
4.5.21 布局重寫語句#layout #@layout 120
4.5.22 停止執行#stop 122
4.5.23 返回指令#return 122
4.5.24 行結束指令 123
4.5.25 讀取文本資源函式read和readContent 123
4.5.26 解析模板parser 123
4.5.27 格式化函式fmt、format和formatter 123
4.5.28 宏調用方法call和callMacro 124
4.5.29 實例判斷函式is、instanceOf和instance 124
4.5.30 求值函式eval和evaluate 124
4.5.31 隨機數函式rand和random 125
4.5.32 類型轉換函式 125
4.5.33 日期格式轉換formatDate 126
4.6 模板語言擴展 126
4.6.1 資源載入器的使用 126
4.6.2 宏的使用 127
4.6.3 函式的使用 128
4.6.4 國際化的使用 129
4.6.5 靜態類和靜態方法的使用 130
4.6.6 Servlet集成 130
4.6.7 SpringMVC集成 132
4.7 本章總結 133
第5章 資料庫訪問層實踐 135
5.1 數據訪問層簡介 135
5.2 常見資料庫訪問層介紹 136
5.2.1 Hibernate簡介 136
5.2.2 Ibatis簡介 138
5.2.3 JPA簡介 140
5.2.4 DSL資料庫訪問層簡介 141
5.3 TinyDsl設計方案 143
5.3.1 SQL抽象化設計 143
5.3.2 DSL風格SQL設計 149
5.3.3 SQL執行接口設計 153
5.3.4 執行接口實現介紹 155
5.4 資料庫訪問層示例 163
5.4.1 工程創建 163
5.4.2 準備工作 167
5.4.3 Hibernate示例 170
5.4.4 Ibatis示例 173
5.4.5 JPA示例 176
5.4.6 TinyDsl示例 180
5.5 本章總結 182
第6章 資料庫擴展實踐 184
6.1 資料庫擴展簡介 184
6.2 常見資料庫擴展方案 184
6.2.1 DAO層 185
6.2.2 DataSource層 186
6.2.3 JDBC層 186
6.2.4 Proxy層 188
6.3 讀寫分離 189
6.3.1 讀寫分離 189
6.3.2 負載均衡 191
6.3.3 數據同步 192
6.4 分庫分表 193
6.4.1 同庫分表 193
6.4.2 不同庫分表 193
6.5 開源方案介紹 194
6.5.1 TDDL 194
6.5.2 Routing4DB 195
6.5.3 TinyDbRouter 195
6.5.4 開源方案的對比 195
6.6 TinyDbRouter的設計和實現 197
6.6.1 設計目標 197
6.6.2 設計原理之接入層設計 197
6.6.3 設計原理之SQL解析層設計 203
6.6.4 設計原理之路由決策層設計 204
6.6.5 設計原理之執行層設計 208
6.6.6 實現 211
6.7 套用實踐 214
6.7.1 讀寫分離示例 215
6.7.2 分庫分表示例 217
6.7.3 集群事務示例 219
6.7.4 元數據示例 222
6.7.5 自定義擴展 223
6.7.6 常見FAQ 224
6.8 本章總結 225
第7章 服務層實踐 227
7.1 服務層簡介 227
7.1.1 傳統服務層 227
7.1.2 Tiny服務層 227
7.2 Tiny服務層介紹 228
7.2.1 服務聲明 229
7.2.2 服務註冊 230
7.2.3 小結 231
7.3 本地服務層實踐 232
7.3.1 服務描述 232
7.3.2 服務定義 235
7.3.3 服務收集與註冊 235
7.3.4 服務執行 236
7.3.5 小結 238
7.4 遠程服務實踐 240
7.4.1 傳統的遠程服務 240
7.4.2 新的遠程服務模式 240
7.4.3 多服務中心支持 242
7.4.4 新的遠程服務實現 244
7.4.5 小結 247
7.5 本地服務調用示例 248
7.5.1 非Tiny框架調用示例 248
7.5.2 Tiny框架套用調用 251
7.6 遠程服務配置示例 253
7.6.1 非Tiny框架配置示例 253
7.6.2 Tiny框架套用配置 257
7.7 本章總結 260
第8章 流程引擎實踐 261
8.1 流程引擎簡介 261
8.1.1 流程引擎的來歷 261
8.1.2 解決方案 262
8.1.3 特性簡介 262
8.2 流程引擎實現 263
8.2.1 流程組件 263
8.2.2 流程組件配置 265
8.2.3 流程組件管理 266
8.2.4 流程配置 266
8.2.5 流程管理 269
8.2.6 流程執行 270
8.3 流程引擎特性 271
8.3.1 流程可繼承性 271
8.3.2 靈活的EL表達式 273
8.3.3 流程可重入 275
8.3.4 流程可轉出 275
8.3.5 強大異常處理 276
8.4 流程編輯器 278
8.4.1 創建流程 278
8.4.2 界面說明 278
8.4.3 操作說明 279
8.5 本章總結 281
第9章 元數據實踐 282
9.1 元數據簡介 282
9.1.1 問題背景 283
9.1.2 解決途徑 283
9.2 基礎元數據設計 284
9.2.1 支持語言類型 284
9.2.2 標準數據類型 286
9.2.3 業務數據類型 287
9.2.4 標準欄位 287
9.3 資料庫元數據設計 288
9.3.1 表及索引 288
9.3.2 視圖 289
9.4 元數據開發指南 289
9.4.1 元數據載入機制 289
9.4.2 元數據處理器 299
9.5 元數據開發實踐 311
9.5.1 Eclipse外掛程式 312
9.5.2 套用配置 312
9.5.3 生成方言模板 315
9.5.4 生成標準數據類型 316
9.5.5 生成業務數據類型 319
9.5.6 生成標準欄位 323
9.5.7 生成資料庫表 326
9.5.8 定義元數據 329
9.5.9 生成Java代碼 332
9.5.10 生成SQL 340
9.6 本章總結 342
第10章 展現層開發實踐 344
10.1 展示層簡介 344
10.1.1 Servlet 344
10.1.2 JSP 345
10.1.3 模板語言 345
10.1.4 展示層常見問題 346
10.2 展示層方案設計 347
10.2.1 UI組件包開發 348
10.2.2 資源合併實踐 351
10.2.3 避免重複代碼 356
10.2.4 國際化問題 356
10.3 前端訪問方案實踐 356
10.3.1 組件包封裝 357
10.3.2 宏接口定義 359
10.3.3 頁面和布局編寫 363
10.3.4 前端參數配置 367
10.4 本章總結 369
10.4.1 關鍵點:DRY原則的實現 369
10.4.2 關鍵點:JS檔案的合併 369
10.4.3 關鍵點:CSS檔案的合併 369
第11章 Web擴展實踐 371
11.1 背景簡介 371
11.2 監聽器設計原理 372
11.2.1 套用配置管理 374
11.2.2 套用處理器(ApplicationProcessor) 375
11.2.3 Web監聽器 379
11.2.4 監聽器配置管理 383
11.3 過濾器設計原理 385
11.3.1 請求上下文(WebContext) 386
11.3.2 TinyFilter介紹 387
11.4 處理器設計原理 394
11.4.1 過濾器配置(TinyProcessorConfig) 394
11.4.2 過濾器配置管理(TinyProcessorConfigManager) 396
11.4.3 處理器管理接口(TinyProcessorManager) 396
11.5 BasicTinyFilter類 398
11.5.1 攔截器接口 398
11.5.2 默認攔截器 399
11.6 SetLocaleTinyFilter類 399
11.6.1 Locale基礎 400
11.6.2 Charset編碼基礎 400
11.6.3 Locale和charset的關係 401
11.6.4 設定locale和charset 402
11.6.5 使用方法 403
11.7 ParserTinyFilter類 404
11.7.1 基本使用方法 404
11.7.2 上傳檔案 407
11.7.3 高級選項 409
11.8 BufferedTinyFilter類 412
11.8.1 實現原理 412
11.8.2 使用方法 414
11.8.3 關閉buffer機制 414
11.9 LazyCommitTinyFilter類 414
11.9.1 什麼是提交 415
11.9.2 實現原理 415
11.9.3 使用方法 415
11.10 RewriteTinyFilter類 416
11.10.1 概述 416
11.10.2 取得路徑 418
11.10.3 匹配rules 418
11.10.4 匹配conditions 418
11.10.5 替換路徑 420
11.10.6 替換參數 420
11.10.7 後續操作 421
11.10.8 重定向 422
11.10.9 自定義處理器 423
11.11 SessionTinyFilter類 423
11.11.1 概述 423
11.11.2 Session框架 426
11.11.3 Cookie Store 431
11.11.4 總結 435
11.12 SpringMVCTinyProcessor介紹 435
11.12.1 基於擴展協定的內容協商 436
11.12.2 約定開發 436
11.12.3 擴展協定 438
11.13 TinyWeb實踐 439
11.13.1 準備工作 439
11.13.2 使用TinyHttpFilter 440
11.13.3 使用TinyProcessor 441
11.14 本章總結 442
第12章 Tiny統一界面框架實踐 444
12.1 UIML簡介 444
12.1.1 問題與需求 444
12.1.2 UIML解決方案 445
12.1.3 UIML設計思路 446
12.1.4 UIML優勢 447
12.2 UIML開發指南 448
12.2.1 框架管理引擎 448
12.2.2 組件類型 450
12.2.3 組件 451
12.2.4 樣式列表 452
12.2.5 樣式 452
12.2.6 布局器類型 453
12.2.7 布局器 453
12.2.8 樣式類型列表 453
12.2.9 樣式類型 453
12.2.10 屬性類型 453
12.2.11 屬性 454
12.3 UIML使用實踐 454
12.3.1 UIML的配置 454
12.3.2 圖形編輯器 455
12.3.3 樣式簡單示例 457
12.3.4 開發流程示例 459
12.4 常見FAQ 460
12.4.1 請問UIML開發必須區別三類角色嗎? 460
12.4.2 請問UIML開發需要了解哪些新的概念? 461
12.4.3 請問UIML開發支持Spring等常用框架嗎? 461
12.4.4 請問UIML支持哪些平台? 461
12.4.5 請問可以修改引用組件的屬性嗎? 461
12.4.6 請問設計組件必須指定平台屬性嗎? 461
12.5 本章總結 461
第13章 RESTful實踐 463
13.1 RESTful簡介 463
13.2 Spring RESTful實踐 464
13.2.1 Spring RESTful簡介 464
13.2.2 使用註解配置URL映射 465
13.3 Tiny RESTful風格實踐 468
13.3.1 URL映射功能 468
13.3.2 URL映射管理功能 470
13.3.3 URL重寫 474
13.4 Tiny RESTful實踐 476
13.4.1 環境準備 476
13.4.2 開發用戶增刪改查套用 476
13.4.3 支持RESTful風格 481
13.5 本章總結 483
附錄A 相關資源 484
A.1 復用第三方庫列表 484
A.2 借鑑第三方開源框架列表 485
A.3 示例工程簡介 486
A.4 支持我們 486
A.5 學習Tiny框架的相關資源 487
附錄B 配置運行指南 488
B.1 環境配置 488
B.1.1 配置Java 488
B.1.2 配置Maven 489
B.1.3 配置IDE- Eclipse 490
B.2 mvn編譯工程 495
B.3 Eclipse或IDEA運行工程 497
B.3.1 Eclipse 497
B.3.2 IDEA 499
??
??
??
??
企業級Java EE架構設計精深實踐
·XXII·
·XXIII·