隨著移動互聯網的興起,以Java技術為后臺的互聯網技術占據了市場的主導地位,而在Java互聯網后臺開發中,SSM框架(Spring Spring MVC MyBatis)成為了主要架構,本書以此為焦點從入門到實際工作要求講述了SSM框架的技術應用;與此同時,為了提高系統性能,NoSQL(尤其是Redis)在互聯網系統中已經廣泛使用,為了適應這個變化,本書通過Spring講解了有關Redis的技術應用,這樣更加貼近實際學習和工作的需要。本書主要分為6個部分,第1部分對Java互聯網的框架和主要涉及的模式做初步簡介;第2部分講述MyBatis技術;第3部分講述Spring基礎(包括IoC、AOP和數據庫應用),重點講解Spring數據庫事務應用,以滿足互聯網企業的應用要求;第4部分,講述Spring MVC框架;第5部分,通過Spring技術的應用,講解Redis技術;第6部分,講解SSM Redis實踐應用,通過互聯網高并發如搶票、搶紅包等場景,使用全注解的方式講解SSM框架的整合,以及高并發與鎖的應用和系統性能優化。本書結合企業的實際需求,從原理到實踐講解SSM Redis技術應用,無論你是Java程序員、SSM應用和研究人員,還是Redis應用人員、互聯網開發人員,都可以從本書中收獲知識。
楊開振 擁有十余年一線Java開發工作經驗,熱衷于Java互聯網技術方向研究,目前從事Java互聯網技術在線教育,著有暢銷書《深入淺出MyBatis技術原理與實戰》。
周吉文 高級工程師,曾獲廣東省科技進步一等獎,曾任國家“863”計劃項目軟件組組長,擔任珠海市第二人民醫院信息部主任多年,有豐富的項目實施和管理經驗。
梁華輝 博學Java開發專家,有豐富的企業級應用及Web項目的開發經驗。對軟件設計模式和代碼整潔方面有深入理解,對Spring、Hibernate等主流開源框架有深入研究。
譚茂華 博學Java開發專家,擁有十余年供應鏈管理、金融、物聯網等行業大型系統軟件開發經驗。熱衷于軟件架構、軟件研發過程控制、Java開源技術(尤其是Spring體系技術)的研究。
目錄
第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的區別 11
1.3 Spring MVC簡介 11
1.4 流行的NoSQL——Redis 12
1.5 SSM Redis結構框圖及概述 13
第2章 Java設計模式 15
2.1 Java反射技術 15
2.1.1 通過反射構建對象 15
2.1.2 反射方法 17
2.1.3 實例 18
2.2 動態模式和責任鏈模式 19
2.2.1 JDK動態 20
2.2.2 CGLIB動態 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 總結 41
第2部分 互聯網持久框架——MyBatis
第3章 認識MyBatis核心組件 44
3.1 持久層的概念和MyBatis的特點 44
3.2 準備MyBatis環境 45
3.3 MyBatis的核心組件 46
3.4 SqlSessionFactory(工廠接口) 47
3.4.1 使用XML構建SqlSessionFactory 48
3.4.2 使用代碼創建SqlSessionFactory 50
3.5 SqlSession 50
3.6 映射器 51
3.6.1 用XML實現映射器 52
3.6.2 注解實現映射器 53
3.6.3 SqlSession發送SQL 54
3.6.4 用Mapper接口發送SQL 55
3.6.5 對比兩種發送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 使用程序傳遞方式傳遞參數 66
4.2.4 總結 66
4.3 settings設置 66
4.4 typeAliases別名 69
4.4.1 系統定義別名 69
4.4.2 自定義別名 72
4.5 typeHandler類型轉換器 72
4.5.1 系統定義的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(運行環境) 89
4.8.1 transactionManager(事務管理器) 90
4.8.2 environment數據源環境 92
4.9 databaseIdProvider數據庫廠商標識 95
4.9.1 使用系統默認的databaseIdProvider 95
4.9.2 不使用系統規則 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 傳遞多個參數 106
5.2.4 使用resultMap映射結果集 109
5.2.5 分頁參數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 參數 116
5.6.1 概述 116
5.6.2 存儲過程參數支持 117
5.6.3 特殊字符串的替換和處理(#和$) 117
5.7 resultMap元素 118
5.7.1 resultMap元素的構成 118
5.7.2 使用map存儲結果集 119
5.7.3 使用POJO存儲結果集 119
5.8 級聯 120
5.8.1 MyBatis中的級聯 121
5.8.2 建立POJO 124
5.8.3 配置映射文件 127
5.8.4 N 1問題 133
5.8.5 延遲加載 133
5.8.6 另一種級聯 137
5.8.7 多對多級聯 140
5.9 緩存 143
5.9.1 一級緩存和二級緩存 144
5.9.2 緩存配置項、自定義和引用 147
5.10 存儲過程 149
5.10.1 IN和OUT參數存儲過程 150
5.10.2 游標的使用 152
第6章 動態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 構建SqlSessionFactory過程 163
7.1.1 構建Configuration 165
7.1.2 構建映射器的內部組成 165
7.1.3 構建SqlSessionFactory 167
7.2 SqlSession運行過程 168
7.2.1 映射器(Mapper)的動態 168
7.2.2 SqlSession下的四大對象 172
7.2.3 SqlSession運行總結 179
第8章 插件 181
8.1 插件接口 181
8.2 插件的初始化 182
8.3 插件的和反射設計 183
8.4 常用的工具類——MetaObject 186
8.5 插件開發過程和實例 187
8.5.1 確定需要攔截的簽名 187
8.5.2 實現攔截方法 189
8.5.3 配置和運行 191
8.5.4 插件實例——分頁插件 192
8.6 總結 205
第3部分 Spring基礎
第9章 Spring IoC的概念 208
9.1 Spring的概述 208
9.2 Spring IoC概述 210
9.2.1 主動創建對象 211
9.2.2 被動創建對象 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 小結 223
第10章 裝配Spring Bean 224
10.1 依賴注入的3種方式 224
10.1.1 構造器注入 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 裝載帶有參數的構造方法類 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 使用類的靜態常量和方法 265
10.10.4 Spring EL運算 265
第11章 面向切面編程 267
11.1 一個簡單的約定游戲 267
11.1.1 約定規則 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注解開發Spring AOP 280
11.3.1 選擇切點 281
11.3.2 創建切面 281
11.3.3 連接點 283
11.3.4 測試AOP 285
11.3.5 環繞通知 287
11.3.6 織入 289
11.3.7 給通知傳遞參數 289
11.3.8 引入 290
11.4 使用XML配置開發Spring AOP 293
11.4.1 前置通知、后置通知、返回通知和異常通知 294
11.4.2 環繞通知 296
11.4.3 給通知傳遞參數 297
11.4.4 引入 298
11.5 經典Spring AOP應用程序 299
11.6 多個切面 301
11.7 小結 306
第12章 Spring和數據庫編程 307
12.1 傳統的JDBC代碼的弊端 307
12.2 配置數據庫資源 309
12.2.1 使用簡單數據庫配置 309
12.2.2 使用第三方數據庫連接池 310
12.2.3 使用JNDI數據庫連接池 310
12.3 JDBC代碼失控的解決方案——jdbcTemplate 311
12.3.1 jdbcTemplate的增、刪、查、改 312
12.3.2 執行多條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數據庫事務管理 330
13.1 Spring數據庫事務管理器的設計 331
13.1.1 配置事務管理器 333
13.1.2 用Java配置方式實現Spring數據庫事務 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 數據庫的相關知識 343
13.4.1 數據庫事務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的自調用失效問題 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的架構 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
還不錯,挺適合我這個階段的
還沒看,紙質還可以
還行,寫的不錯。
不錯!寫的通俗易懂
剛收到書本,感覺還不錯,值得一看!
還是比較基礎
內容不錯,比較適合有經驗,但是對于框架了解不多的人,另外,老板默認順豐快遞,讓我小小的感動了一把!
還不錯吧,難得的出版
里面的內容還是不錯的
沒看呢應該可以吧
很實用,提升代碼技能
書很好,很厚,內容比較難,不適合新手閱讀,適合有一定ssm基礎的同學進階閱讀。內容很好沒話說,作者人不錯,技術好
還可以,ssm框架的書很少,已經很新了
很失望!!!!
包裝的不夠結實
快遞很給力,書的內容不錯,正在閱讀
還不錯哦(⊙o⊙)哦
物流快,書質量看著不錯(還沒有拆封)
包裝很好,很有用。
物流真的非常快,包裝也很完好,很贊。
質量非常好!
很好,快遞很快,對學習java EE很有幫助。
拿到了,還沒有開始看,用到了再回來追加
從未見過如此臟的書
學習,學習,萬惡的代碼啊啊啊啊
對目前的學習進度很有幫助
正在學習中,剛看感覺不是很明白。
快遞員,無力吐槽,說是派件拍錯了,然后各種奇葩事情!!!建議當當別用這家“芝麻開門”快遞公司了,各種差勁!
書很不錯 學習中
內容看著不錯,包裝完好
內容還好,書頁有爛的
快遞途中 有損傷
書有磕碰不過影響不大,快遞太慢,而且聯系不上。
不錯,幫助挺大的。
書還不錯。
介紹框架的書可能確實難把握,看了大半了,這本書真的只能說聊勝于無,錯誤也比較多,而且賣貴了
很不錯,里面講的很細,之前學過,不過有的地方忘了,正好在重新鞏固一下
本人從事安卓開發,一直以來對web有興趣,特意買此書學習java技術。
屬于講解核心,不寫細節,有時候會發現太難,需要一定功底
這本書可以說是順應需求產生的,之前一直買不到ssm這么全面的書,并且還是帶著redis講解的,直接看視頻太瑣碎,這本書可以給我系統的認識,很不錯,就是貴了點,估計是剛出版,以后會和什么整合開發入門精通一樣價格。當當很不錯的,增值發票也開了,很好。