隨著移動(dòng)互聯(lián)網(wǎng)的興起,以Java技術(shù)為后臺(tái)的互聯(lián)網(wǎng)技術(shù)占據(jù)了市場(chǎng)的主導(dǎo)地位,而在Java互聯(lián)網(wǎng)后臺(tái)開發(fā)中,SSM框架(Spring Spring MVC MyBatis)成為了主要架構(gòu),本書以此為焦點(diǎn)從入門到實(shí)際工作要求講述了SSM框架的技術(shù)應(yīng)用;與此同時(shí),為了提高系統(tǒng)性能,NoSQL(尤其是Redis)在互聯(lián)網(wǎng)系統(tǒng)中已經(jīng)廣泛使用,為了適應(yīng)這個(gè)變化,本書通過Spring講解了有關(guān)Redis的技術(shù)應(yīng)用,這樣更加貼近實(shí)際學(xué)習(xí)和工作的需要。本書主要分為6個(gè)部分,第1部分對(duì)Java互聯(lián)網(wǎng)的框架和主要涉及的模式做初步簡(jiǎn)介;第2部分講述MyBatis技術(shù);第3部分講述Spring基礎(chǔ)(包括IoC、AOP和數(shù)據(jù)庫(kù)應(yīng)用),重點(diǎn)講解Spring數(shù)據(jù)庫(kù)事務(wù)應(yīng)用,以滿足互聯(lián)網(wǎng)企業(yè)的應(yīng)用要求;第4部分,講述Spring MVC框架;第5部分,通過Spring技術(shù)的應(yīng)用,講解Redis技術(shù);第6部分,講解SSM Redis實(shí)踐應(yīng)用,通過互聯(lián)網(wǎng)高并發(fā)如搶票、搶紅包等場(chǎng)景,使用全注解的方式講解SSM框架的整合,以及高并發(fā)與鎖的應(yīng)用和系統(tǒng)性能優(yōu)化。本書結(jié)合企業(yè)的實(shí)際需求,從原理到實(shí)踐講解SSM Redis技術(shù)應(yīng)用,無論你是Java程序員、SSM應(yīng)用和研究人員,還是Redis應(yīng)用人員、互聯(lián)網(wǎng)開發(fā)人員,都可以從本書中收獲知識(shí)。
楊開振 擁有十余年一線Java開發(fā)工作經(jīng)驗(yàn),熱衷于Java互聯(lián)網(wǎng)技術(shù)方向研究,目前從事Java互聯(lián)網(wǎng)技術(shù)在線教育,著有暢銷書《深入淺出MyBatis技術(shù)原理與實(shí)戰(zhàn)》。
周吉文 高級(jí)工程師,曾獲廣東省科技進(jìn)步一等獎(jiǎng),曾任國(guó)家“863”計(jì)劃項(xiàng)目軟件組組長(zhǎng),擔(dān)任珠海市第二人民醫(yī)院信息部主任多年,有豐富的項(xiàng)目實(shí)施和管理經(jīng)驗(yàn)。
梁華輝 博學(xué)Java開發(fā)專家,有豐富的企業(yè)級(jí)應(yīng)用及Web項(xiàng)目的開發(fā)經(jīng)驗(yàn)。對(duì)軟件設(shè)計(jì)模式和代碼整潔方面有深入理解,對(duì)Spring、Hibernate等主流開源框架有深入研究。
譚茂華 博學(xué)Java開發(fā)專家,擁有十余年供應(yīng)鏈管理、金融、物聯(lián)網(wǎng)等行業(yè)大型系統(tǒng)軟件開發(fā)經(jīng)驗(yàn)。熱衷于軟件架構(gòu)、軟件研發(fā)過程控制、Java開源技術(shù)(尤其是Spring體系技術(shù))的研究。
目錄
第1部分 入門和技術(shù)基礎(chǔ)
第1章 認(rèn)識(shí)SSM框架和Redis 2
1.1 Spring框架 2
1.1.1 Spring IoC簡(jiǎn)介 2
1.1.2 Spring AOP 4
1.2 MyBatis簡(jiǎn)介 6
1.2.1 Hibernate簡(jiǎn)介 7
1.2.2 MyBatis 8
1.2.3 Hibernate和MyBatis的區(qū)別 11
1.3 Spring MVC簡(jiǎn)介 11
1.4 流行的NoSQL——Redis 12
1.5 SSM Redis結(jié)構(gòu)框圖及概述 13
第2章 Java設(shè)計(jì)模式 15
2.1 Java反射技術(shù) 15
2.1.1 通過反射構(gòu)建對(duì)象 15
2.1.2 反射方法 17
2.1.3 實(shí)例 18
2.2 動(dòng)態(tài)模式和責(zé)任鏈模式 19
2.2.1 JDK動(dòng)態(tài) 20
2.2.2 CGLIB動(dòng)態(tài) 22
2.2.3 攔截器 24
2.2.4 責(zé)任鏈模式 28
2.3 觀察者(Observer)模式 30
2.3.1 概述 31
2.3.2 實(shí)例 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模式實(shí)例 39
2.6 總結(jié) 41
第2部分 互聯(lián)網(wǎng)持久框架——MyBatis
第3章 認(rèn)識(shí)MyBatis核心組件 44
3.1 持久層的概念和MyBatis的特點(diǎn) 44
3.2 準(zhǔn)備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實(shí)現(xiàn)映射器 52
3.6.2 注解實(shí)現(xiàn)映射器 53
3.6.3 SqlSession發(fā)送SQL 54
3.6.4 用Mapper接口發(fā)送SQL 55
3.6.5 對(duì)比兩種發(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 實(shí)例 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設(shè)置 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(對(duì)象工廠) 87
4.7 插件 89
4.8 environments(運(yùn)行環(huán)境) 89
4.8.1 transactionManager(事務(wù)管理器) 90
4.8.2 environment數(shù)據(jù)源環(huán)境 92
4.9 databaseIdProvider數(shù)據(jù)庫(kù)廠商標(biāo)識(shí) 95
4.9.1 使用系統(tǒng)默認(rèn)的databaseIdProvider 95
4.9.2 不使用系統(tǒng)規(guī)則 98
4.10 引入映射器的方法 99
第5章 映射器 102
5.1 概述 102
5.2 select元素——查詢語句 103
5.2.1 簡(jiǎn)單的select元素的應(yīng)用 104
5.2.2 自動(dòng)映射和駝峰映射 105
5.2.3 傳遞多個(gè)參數(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 簡(jiǎn)單的insert語句的應(yīng)用 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 存儲(chǔ)過程參數(shù)支持 117
5.6.3 特殊字符串的替換和處理(#和$) 117
5.7 resultMap元素 118
5.7.1 resultMap元素的構(gòu)成 118
5.7.2 使用map存儲(chǔ)結(jié)果集 119
5.7.3 使用POJO存儲(chǔ)結(jié)果集 119
5.8 級(jí)聯(lián) 120
5.8.1 MyBatis中的級(jí)聯(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 另一種級(jí)聯(lián) 137
5.8.7 多對(duì)多級(jí)聯(lián) 140
5.9 緩存 143
5.9.1 一級(jí)緩存和二級(jí)緩存 144
5.9.2 緩存配置項(xiàng)、自定義和引用 147
5.10 存儲(chǔ)過程 149
5.10.1 IN和OUT參數(shù)存儲(chǔ)過程 150
5.10.2 游標(biāo)的使用 152
第6章 動(dòng)態(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的解析和運(yùn)行原理 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運(yùn)行過程 168
7.2.1 映射器(Mapper)的動(dòng)態(tài) 168
7.2.2 SqlSession下的四大對(duì)象 172
7.2.3 SqlSession運(yùn)行總結(jié) 179
第8章 插件 181
8.1 插件接口 181
8.2 插件的初始化 182
8.3 插件的和反射設(shè)計(jì) 183
8.4 常用的工具類——MetaObject 186
8.5 插件開發(fā)過程和實(shí)例 187
8.5.1 確定需要攔截的簽名 187
8.5.2 實(shí)現(xiàn)攔截方法 189
8.5.3 配置和運(yùn)行 191
8.5.4 插件實(shí)例——分頁插件 192
8.6 總結(jié) 205
第3部分 Spring基礎(chǔ)
第9章 Spring IoC的概念 208
9.1 Spring的概述 208
9.2 Spring IoC概述 210
9.2.1 主動(dòng)創(chuàng)建對(duì)象 211
9.2.2 被動(dòng)創(chuàng)建對(duì)象 213
9.2.3 Spring IoC闡述 214
9.3 Spring IoC容器 215
9.3.1 Spring IoC容器的設(shè)計(jì) 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 裝配簡(jiǎn)易值 228
10.3.2 裝配集合 229
10.3.3 命名空間裝配 233
10.4 通過注解裝配Bean 235
10.4.1 使用@Component裝配Bean 236
10.4.2 自動(dòng)裝配——@Autowired 239
10.4.3 自動(dòng)裝配的歧義性(@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 啟動(dòng)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表達(dá)式(Spring EL) 261
10.10.1 Spring EL相關(guān)的類 261
10.10.2 Bean的屬性和方法 264
10.10.3 使用類的靜態(tài)常量和方法 265
10.10.4 Spring EL運(yùn)算 265
第11章 面向切面編程 267
11.1 一個(gè)簡(jiǎn)單的約定游戲 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 面向切面編程的術(shù)語 278
11.2.3 Spring對(duì)AOP的支持 280
11.3 使用@AspectJ注解開發(fā)Spring AOP 280
11.3.1 選擇切點(diǎn) 281
11.3.2 創(chuàng)建切面 281
11.3.3 連接點(diǎn) 283
11.3.4 測(cè)試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應(yīng)用程序 299
11.6 多個(gè)切面 301
11.7 小結(jié) 306
第12章 Spring和數(shù)據(jù)庫(kù)編程 307
12.1 傳統(tǒng)的JDBC代碼的弊端 307
12.2 配置數(shù)據(jù)庫(kù)資源 309
12.2.1 使用簡(jiǎn)單數(shù)據(jù)庫(kù)配置 309
12.2.2 使用第三方數(shù)據(jù)庫(kù)連接池 310
12.2.3 使用JNDI數(shù)據(jù)庫(kù)連接池 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項(xiàng)目 317
12.4.1 配置SqlSessionFactoryBean 318
12.4.2 SqlSessionTemplate組件 322
12.4.3 配置MapperFactoryBean 324
12.4.4 配置MapperScannerConfigurer 324
12.4.5 測(cè)試Spring MyBatis 327
第13章 深入Spring數(shù)據(jù)庫(kù)事務(wù)管理 330
13.1 Spring數(shù)據(jù)庫(kù)事務(wù)管理器的設(shè)計(jì) 331
13.1.1 配置事務(wù)管理器 333
13.1.2 用Java配置方式實(shí)現(xiàn)Spring數(shù)據(jù)庫(kù)事務(wù) 334
13.2 編程式事務(wù) 336
13.3 聲明式事務(wù) 337
13.3.1 Transactional的配置項(xiàng) 337
13.3.2 使用XML進(jìn)行配置事務(wù)管理器 339
13.3.3 事務(wù)定義器 340
13.3.4 聲明式事務(wù)的約定流程 341
13.4 數(shù)據(jù)庫(kù)的相關(guān)知識(shí) 343
13.4.1 數(shù)據(jù)庫(kù)事務(wù)ACID特性 343
13.4.2 丟失更新 343
13.4.3 隔離級(jí)別 344
13.5 選擇隔離級(jí)別和傳播行為 347
13.5.1 選擇隔離級(jí)別 347
13.5.2 傳播行為 348
13.6 在Spring MyBatis組合中使用事務(wù) 350
13.7 @Transactional的自調(diào)用失效問題 358
13.8 典型錯(cuò)誤用法的剖析 363
13.8.1 錯(cuò)誤使用Service 363
13.8.2 過長(zhǎng)時(shí)間占用事務(wù) 364
13.8.3 錯(cuò)誤捕捉異常 366
第4部分 Spring MVC框架
第14章 Spring MVC的初始化和流程 370
14.1 MVC設(shè)計(jì)概述 370
14.1.1 Spring MVC的架構(gòu) 372
14.1.2 Spring MVC組件與流程 372
14.1.3 Spring MVC入門的實(shí)例 374
14.2 Spring MVC初始化 378
14.2.1 初始化Spring IoC上下文 378
14.2.2 初始化映射請(qǐng)求上下文 379
14.2.3 使用注解配置方式初始化 386
14.3 S
還不錯(cuò),挺適合我這個(gè)階段的
還沒看,紙質(zhì)還可以
還行,寫的不錯(cuò)。
不錯(cuò)!寫的通俗易懂
剛收到書本,感覺還不錯(cuò),值得一看!
還是比較基礎(chǔ)
內(nèi)容不錯(cuò),比較適合有經(jīng)驗(yàn),但是對(duì)于框架了解不多的人,另外,老板默認(rèn)順豐快遞,讓我小小的感動(dòng)了一把!
還不錯(cuò)吧,難得的出版
里面的內(nèi)容還是不錯(cuò)的
沒看呢應(yīng)該可以吧
很實(shí)用,提升代碼技能
書很好,很厚,內(nèi)容比較難,不適合新手閱讀,適合有一定ssm基礎(chǔ)的同學(xué)進(jìn)階閱讀。內(nèi)容很好沒話說,作者人不錯(cuò),技術(shù)好
還可以,ssm框架的書很少,已經(jīng)很新了
很失望!!!!
包裝的不夠結(jié)實(shí)
快遞很給力,書的內(nèi)容不錯(cuò),正在閱讀
還不錯(cuò)哦(⊙o⊙)哦
物流快,書質(zhì)量看著不錯(cuò)(還沒有拆封)
包裝很好,很有用。
物流真的非常快,包裝也很完好,很贊。
質(zhì)量非常好!
很好,快遞很快,對(duì)學(xué)習(xí)java EE很有幫助。
拿到了,還沒有開始看,用到了再回來追加
從未見過如此臟的書
學(xué)習(xí),學(xué)習(xí),萬惡的代碼啊啊啊啊
對(duì)目前的學(xué)習(xí)進(jìn)度很有幫助
正在學(xué)習(xí)中,剛看感覺不是很明白。
快遞員,無力吐槽,說是派件拍錯(cuò)了,然后各種奇葩事情!!!建議當(dāng)當(dāng)別用這家“芝麻開門”快遞公司了,各種差勁!
書很不錯(cuò) 學(xué)習(xí)中
內(nèi)容看著不錯(cuò),包裝完好
內(nèi)容還好,書頁有爛的
快遞途中 有損傷
書有磕碰不過影響不大,快遞太慢,而且聯(lián)系不上。
不錯(cuò),幫助挺大的。
書還不錯(cuò)。
介紹框架的書可能確實(shí)難把握,看了大半了,這本書真的只能說聊勝于無,錯(cuò)誤也比較多,而且賣貴了
很不錯(cuò),里面講的很細(xì),之前學(xué)過,不過有的地方忘了,正好在重新鞏固一下
本人從事安卓開發(fā),一直以來對(duì)web有興趣,特意買此書學(xué)習(xí)java技術(shù)。
屬于講解核心,不寫細(xì)節(jié),有時(shí)候會(huì)發(fā)現(xiàn)太難,需要一定功底
這本書可以說是順應(yīng)需求產(chǎn)生的,之前一直買不到ssm這么全面的書,并且還是帶著redis講解的,直接看視頻太瑣碎,這本書可以給我系統(tǒng)的認(rèn)識(shí),很不錯(cuò),就是貴了點(diǎn),估計(jì)是剛出版,以后會(huì)和什么整合開發(fā)入門精通一樣價(jià)格。當(dāng)當(dāng)很不錯(cuò)的,增值發(fā)票也開了,很好。