本光盤是《輕量級Java EE企業(yè)應用開發(fā)實戰(zhàn)——Struts 2+Spring+Hibernate整合開發(fā)》一書的配書光盤,書中的代碼按章、按節(jié)存放,即第2章、第1節(jié)所使用的代碼放在codes文件夾中的02\2.1文件夾下,依此類推。
Java EE互聯(lián)網(wǎng)輕量級框架整合開發(fā)目錄
第1部分 入門和技術基礎
第1章 認識SSM框架和Redis 2
1.1 Spring框架 2
1.1.1 Spring IoC簡介 2
1.1.2 Spring AOP 4
1.2 MyBatis簡介 6
1.2.1 Hibernate簡介 7
1.2.2 MyBatis 8
1.2.3 Hibernate和MyBatis的區(qū)別 11
1.3 Spring MVC簡介 11
1.4 最流行的NoSQL——Redis 12
1.5 SSM Redis結(jié)構(gòu)框圖及概述 13
第2章 Java設計模式 15
2.1 Java反射技術 15
2.1.1 通過反射構(gòu)建對象 15
2.1.2 反射方法 17
2.1.3 實例 18
2.2 動態(tài)代理模式和責任鏈模式 19
2.2.1 JDK動態(tài)代理 20
2.2.2 CGLIB動態(tài)代理 22
2.2.3 攔截器 24
2.2.4 責任鏈模式 28
2.3 觀察者(Observer)模式 30
2.3.1 概述 31
2.3.2 實例 32
2.4 工廠模式和抽象工廠模式 35
2.4.1 普通工廠(Simple Factory)模式 35
2.4.2 抽象工廠(Abstract Factory)模式 36
2.5 建造者(Builder)模式 38
2.5.1 概述 38
2.5.2 Builder模式實例 39
2.6 總結(jié) 41
第2部分 互聯(lián)網(wǎng)持久框架——MyBatis
第3章 認識MyBatis核心組件 44
3.1 持久層的概念和MyBatis的特點 44
3.2 準備MyBatis環(huán)境 45
3.3 MyBatis的核心組件 46
3.4 SqlSessionFactory(工廠接口) 47
3.4.1 使用XML構(gòu)建SqlSessionFactory 48
3.4.2 使用代碼創(chuàng)建SqlSessionFactory 50
3.5 SqlSession 50
3.6 映射器 51
3.6.1 用XML實現(xiàn)映射器 52
3.6.2 注解實現(xiàn)映射器 53
3.6.3 SqlSession發(fā)送SQL 54
3.6.4 用Mapper接口發(fā)送SQL 55
3.6.5 對比兩種發(fā)送SQL方式 55
3.7 生命周期 55
3.7.1 SqlSessionFactoryBuilder 56
3.7.2 SqlSessionFactory 56
3.7.3 SqlSession 56
3.7.4 Mapper 56
3.8 實例 57
第4章 MyBatis配置 63
4.1 概述 63
4.2 properties屬性 64
4.2.1 property子元素 64
4.2.2 使用properties文件 65
4.2.3 使用程序傳遞方式傳遞參數(shù) 66
4.2.4 總結(jié) 66
4.3 settings設置 66
4.4 typeAliases別名 69
4.4.1 系統(tǒng)定義別名 69
4.4.2 自定義別名 72
4.5 typeHandler類型轉(zhuǎn)換器 72
4.5.1 系統(tǒng)定義的typeHandler 73
4.5.2 自定義typeHandler 78
4.5.3 枚舉typeHandler 81
4.5.4 文件操作 86
4.6 ObjectFactory(對象工廠) 87
4.7 插件 89
4.8 environments(運行環(huán)境) 89
4.8.1 transactionManager(事務管理器) 90
4.8.2 environment數(shù)據(jù)源環(huán)境 92
4.9 databaseIdProvider數(shù)據(jù)庫廠商標識 95
4.9.1 使用系統(tǒng)默認的databaseIdProvider 95
4.9.2 不使用系統(tǒng)規(guī)則 98
4.10 引入映射器的方法 99
第5章 映射器 102
5.1 概述 102
5.2 select元素——查詢語句 103
5.2.1 簡單的select元素的應用 104
5.2.2 自動映射和駝峰映射 105
5.2.3 傳遞多個參數(shù) 106
5.2.4 使用resultMap映射結(jié)果集 109
5.2.5 分頁參數(shù)RowBounds 110
5.3 insert元素——插入語句 112
5.3.1 概述 112
5.3.2 簡單的insert語句的應用 113
5.3.3 主鍵回填 113
5.3.4 自定義主鍵 114
5.4 update元素和delete元素 114
5.5 sql元素 115
5.6 參數(shù) 116
5.6.1 概述 116
5.6.2 存儲過程參數(shù)支持 117
5.6.3 特殊字符串的替換和處理(#和$) 117
5.7 resultMap元素 118
5.7.1 resultMap元素的構(gòu)成 118
5.7.2 使用map存儲結(jié)果集 119
5.7.3 使用POJO存儲結(jié)果集 119
5.8 級聯(lián) 120
5.8.1 MyBatis中的級聯(lián) 121
5.8.2 建立POJO 124
5.8.3 配置映射文件 127
5.8.4 N 1問題 133
5.8.5 延遲加載 133
5.8.6 另一種級聯(lián) 137
5.8.7 多對多級聯(lián) 140
5.9 緩存 143
5.9.1 一級緩存和二級緩存 144
5.9.2 緩存配置項、自定義和引用 147
5.10 存儲過程 149
5.10.1 IN和OUT參數(shù)存儲過程 150
5.10.2 游標的使用 152
第6章 動態(tài)SQL 155
6.1 概述 155
6.2 if元素 156
6.3 choose、when、otherwise元素 156
6.4 trim、where、set元素 157
6.5 foreach元素 159
6.6 用test的屬性判斷字符串 159
6.7 bind元素 160
第7章 MyBatis的解析和運行原理 162
7.1 構(gòu)建SqlSessionFactory過程 163
7.1.1 構(gòu)建Configuration 165
7.1.2 構(gòu)建映射器的內(nèi)部組成 165
7.1.3 構(gòu)建SqlSessionFactory 167
7.2 SqlSession運行過程 168
7.2.1 映射器(Mapper)的動態(tài)代理 168
7.2.2 SqlSession下的四大對象 172
7.2.3 SqlSession運行總結(jié) 179
第8章 插件 181
8.1 插件接口 181
8.2 插件的初始化 182
8.3 插件的代理和反射設計 183
8.4 常用的工具類——MetaObject 186
8.5 插件開發(fā)過程和實例 187
8.5.1 確定需要攔截的簽名 187
8.5.2 實現(xiàn)攔截方法 189
8.5.3 配置和運行 191
8.5.4 插件實例——分頁插件 192
8.6 總結(jié) 205
第3部分 Spring基礎
第9章 Spring IoC的概念 208
9.1 Spring的概述 208
9.2 Spring IoC概述 210
9.2.1 主動創(chuàng)建對象 211
9.2.2 被動創(chuàng)建對象 213
9.2.3 Spring IoC闡述 214
9.3 Spring IoC容器 215
9.3.1 Spring IoC容器的設計 215
9.3.2 Spring IoC容器的初始化和依賴注入 218
9.3.3 Spring Bean的生命周期 219
9.4 小結(jié) 223
第10章 裝配Spring Bean 224
10.1 依賴注入的3種方式 224
10.1.1 構(gòu)造器注入 224
10.1.2 使用setter注入 225
10.1.3 接口注入 226
10.2 裝配Bean概述 227
10.3 通過XML配置裝配Bean 228
10.3.1 裝配簡易值 228
10.3.2 裝配集合 229
10.3.3 命名空間裝配 233
10.4 通過注解裝配Bean 235
10.4.1 使用@Component裝配Bean 236
10.4.2 自動裝配——@Autowired 239
10.4.3 自動裝配的歧義性(@Primary和@Qualifier) 241
10.4.4 裝載帶有參數(shù)的構(gòu)造方法類 244
10.4.5 使用@Bean裝配Bean 245
10.4.6 注解自定義Bean的初始化和銷毀方法 245
10.5 裝配的混合使用 246
10.6 使用Profile 249
10.6.1 使用注解@Profile配置 249
10.6.2 使用XML定義Profile 250
10.6.3 啟動Profile 252
10.7 加載屬性(properties)文件 254
10.7.1 使用注解方式加載屬性文件 254
10.7.2 使用XML方式加載屬性文件 257
10.8 條件化裝配Bean 258
10.9 Bean的作用域 259
10.10 使用Spring表達式(Spring EL) 261
10.10.1 Spring EL相關的類 261
10.10.2 Bean的屬性和方法 264
10.10.3 使用類的靜態(tài)常量和方法 265
10.10.4 Spring EL運算 265
第11章 面向切面編程 267
11.1 一個簡單的約定游戲 267
11.1.1 約定規(guī)則 267
11.1.2 讀者的代碼 269
11.1.3 筆者的代碼 271
11.2 Spring AOP的基本概念 274
11.2.1 AOP的概念和使用原因 274
11.2.2 面向切面編程的術語 278
11.2.3 Spring對AOP的支持 280
11.3 使用@AspectJ注解開發(fā)Spring AOP 280
11.3.1 選擇切點 281
11.3.2 創(chuàng)建切面 281
11.3.3 連接點 283
11.3.4 測試AOP 285
11.3.5 環(huán)繞通知 287
11.3.6 織入 289
11.3.7 給通知傳遞參數(shù) 289
11.3.8 引入 290
11.4 使用XML配置開發(fā)Spring AOP 293
11.4.1 前置通知、后置通知、返回通知和異常通知 294
11.4.2 環(huán)繞通知 296
11.4.3 給通知傳遞參數(shù) 297
11.4.4 引入 298
11.5 經(jīng)典Spring AOP應用程序 299
11.6 多個切面 301
11.7 小結(jié) 306
第12章 Spring和數(shù)據(jù)庫編程 307
12.1 傳統(tǒng)的JDBC代碼的弊端 307
12.2 配置數(shù)據(jù)庫資源 309
12.2.1 使用簡單數(shù)據(jù)庫配置 309
12.2.2 使用第三方數(shù)據(jù)庫連接池 310
12.2.3 使用JNDI數(shù)據(jù)庫連接池 310
12.3 JDBC代碼失控的解決方案——jdbcTemplate 311
12.3.1 jdbcTemplate的增、刪、查、改 312
12.3.2 執(zhí)行多條SQL 314
12.3.3 jdbcTemplate的源碼分析 315
12.4 MyBatis-Spring項目 317
12.4.1 配置SqlSessionFactoryBean 318
12.4.2 SqlSessionTemplate組件 322
12.4.3 配置MapperFactoryBean 324
12.4.4 配置MapperScannerConfigurer 324
12.4.5 測試Spring MyBatis 327
第13章 深入Spring數(shù)據(jù)庫事務管理 330
13.1 Spring數(shù)據(jù)庫事務管理器的設計 331
13.1.1 配置事務管理器 333
13.1.2 用Java配置方式實現(xiàn)Spring數(shù)據(jù)庫事務 334
13.2 編程式事務 336
13.3 聲明式事務 337
13.3.1 Transactional的配置項 337
13.3.2 使用XML進行配置事務管理器 339
13.3.3 事務定義器 340
13.3.4 聲明式事務的約定流程 341
13.4 數(shù)據(jù)庫的相關知識 343
13.4.1 數(shù)據(jù)庫事務ACID特性 343
13.4.2 丟失更新 343
13.4.3 隔離級別 344
13.5 選擇隔離級別和傳播行為 347
13.5.1 選擇隔離級別 347
13.5.2 傳播行為 348
13.6 在Spring MyBatis組合中使用事務 350
13.7 @Transactional的自調(diào)用失效問題 358
13.8 典型錯誤用法的剖析 363
13.8.1 錯誤使用Service 363
13.8.2 過長時間占用事務 364
13.8.3 錯誤捕捉異常 366
第4部分 Spring MVC框架
第14章 Spring MVC的初始化和流程 370
14.1 MVC設計概述 370
14.1.1 Spring MVC的架構(gòu) 372
14.1.2 Spring MVC組件與流程 372
14.1.3 Spring MVC入門的實例 374
14.2 Spring MVC初始化 378
14.2.1 初始化Spring IoC上下文 378
14.2.2 初始化映射請求上下文 379
14.2.3 使用注解配置方式初始化 386
14.3 S
Java EE互聯(lián)網(wǎng)輕量級框架整合開發(fā)光盤內(nèi)容
另:書中每份源代碼也給出與光盤源文件的對應關系,方便讀者查找。
本光盤codes目錄下有10個文件夾,其內(nèi)容和含義說明如下:
(1) 文件夾01~10對應于《輕量級Java EE企業(yè)應用開發(fā)實戰(zhàn)——Struts 2+Spring+Hibernate整合開發(fā)》中的章名,即第2章所使用的代碼放在codes文件夾中的02文件夾下,依此類推。
(2) 文件夾10下有HRSystem和HRSystem_Eclipse兩個文件夾,它們是同一個項目的源文件,其中HRSystem是IDE平臺無關的項目,使用Ant來編譯即可;而HRSystem_Eclipse是該項目在Eclipse IDE工具中的項目文件。
(3) codes\03\3.2\Struts2Demo目錄、codes\05\5.2\HibernateDemo目錄、codes\07\7.2\myspring目錄和codes\10\HRSystem_Eclipse目錄下有.classpath、.mymetadata、.project、.springBeans等文件,它們是Eclipse項目文件,請不要刪除。
二、運行環(huán)境
本書中的程序在以下環(huán)境調(diào)試通過:
(1) 安裝jdk-6u6-windows-i586-p.exe,安裝完成后,添加CLASSPATH環(huán)境變量,該環(huán)境變量的值為;%JAVA_HOME%/lib/tools.jar;;%JAVA_HOME%/lib/dt.jar。如果為了可以編譯和運行Java程序,還應該在PATH環(huán)境變量中增加%JAVA_HOME%/bin。其中,JAVA_HOME代表JDK(不是JRE)的安裝路徑。
(2) 安裝Apache的Tomcat 6.0.16,不要使用安裝文件安裝,而是采用解壓縮的安裝方式。
安裝Tomcat請參看第1章。安裝完成后,將Tomcat安裝路徑的lib下的jsp-api.jar和servlet-api.jar兩個JAR文件添加到CLASSPATH環(huán)境變量之后。
(3) 安裝apache-ant-1.7.0。將下載的Ant壓縮文件解壓縮到任意路徑,然后增加ANT_HOME環(huán)境變量,讓變量的值為Ant的解壓縮路徑。并在PATH環(huán)境變量中增加%ANT_HOME%/bin環(huán)境變量。
(4) 安裝MySQL 5.0或更高版本,安裝MysSQL時選擇GBK的編碼方式。
(5) 安裝Eclipse 3.2,并安裝MyEclipse 6.0插件。
關于如何安裝上面工具,請參考本書的第1章。
三、注意事項
(1) 獨立應用程序的代碼中都包括build.xml文件,在DOS或Shell下進入build.xml文件所在路徑,執(zhí)行如下命令:
ant build -- 編譯程序
ant run --運行程序
(2) 對于Web應用,將該應用復制到%TOMCAT_HOME%/webapps路徑下,然后進入build.xml所在路徑,執(zhí)行如下命令:
ant build -- 編譯應用
啟動Tomcat服務器,使用瀏覽器即可訪問該應用。
(3) 對于Eclipse項目文件,導入Eclipse開發(fā)工具即可。
(4) 第10章的案例,請參看項目下的readme.txt文件。
(5) 代碼中有大量代碼需要連接數(shù)據(jù)庫,讀者應修改數(shù)據(jù)庫URL以及用戶名、密碼,讓這些代碼與讀者運行環(huán)境一致。如果項目下有SQL腳本,導入SQL腳本即可;如果沒有SQL腳本,系統(tǒng)將在運行時自動建表,讀者只需創(chuàng)建對應數(shù)據(jù)庫即可。
(6) 在使用本光盤中的程序時,請將程序拷貝到硬盤上,并去除文件的只讀屬性。
- PC官方版
- 安卓官方手機版
- IOS官方手機版