本書從實戰(zhàn)入手,通過大量示例介紹了Spring+SpringMVC+MyBatis整合開發(fā)的相關(guān)內(nèi)容,提升讀者對框架的掌握度和理解度,從而實現(xiàn)對框架會用、用對及精用的目標。本書共18章,分為5篇。第1篇Spring核心框架,涵蓋Spring概述、Spring IoC容器初探、Web項目環(huán)境搭建與項目創(chuàng)建、Spring IoC容器進階、基于注解和代碼的配置、Spring測試;第2篇Spring MVC框架,涵蓋Spring Web MVC概述、數(shù)據(jù)類型轉(zhuǎn)換、驗證與異常處理,以及Spring MVC進階和測試框架;第3篇數(shù)據(jù)技術(shù),涵蓋數(shù)據(jù)庫與Java數(shù)據(jù)訪問技術(shù)、MyBatis基本使用、MyBatis進階、Spring數(shù)據(jù)訪問與事務(wù)管理;第4篇SSM整合開發(fā),涵蓋SSM整合概述與SSM整合實例;第5篇高級開發(fā)技術(shù),涵蓋Spring AOP與MVC攔截器,以及Spring Security框架與多線程。本書適合具備Java基礎(chǔ)的SSM初學者和進階開發(fā)人員閱讀,也適合Java Web開發(fā)工程師閱讀;對于探究Spring及Spring Boot框架機制與原理的工程師也具有參考意義。
前言
第1篇 Spring核心框架
第1章 Spring概述2
1.1 Spring的由來與發(fā)展2
1.1.1 Java簡史3
1.1.2 Spring編年簡史5
1.2 Spring的概念及理念6
1.3 Spring框架體系結(jié)構(gòu)7
1.4 Spring生態(tài)圈10
1.5 Spring資源與社區(qū)12
1.6 Spring綜述13
第2章 Spring IoC容器初探14
2.1 Spring IoC容器及相關(guān)概念14
2.1.1 組件、框架和容器14
2.1.2 JavaBean、POJO和EJB簡介16
2.1.3 IoC與DI簡介17
2.1.4 Spring與EJB簡介19
2.2 Spring容器初始化20
2.2.1 BeanFactory與ApplicationContext20
2.2.2 ApplicationContext初始化方式21
2.2.3 Spring基于XML的配置文件結(jié)構(gòu)23
2.2.4 Bean的配置方式24
2.2.5 哪些類需要配置成Bean25
2.2.6 容器的關(guān)閉25
2.2.7 Spring容器的定義26
2.3 依賴注入與方式26
2.3.1 構(gòu)造函數(shù)注入27
2.3.2 設(shè)置值注入28
第3章 Web項目環(huán)境搭建與項目創(chuàng)建30
3.1 環(huán)境與前置準備30
3.1.1 JDK的下載與安裝30
3.1.2 Eclipse的下載與安裝32
3.1.3 Tomcat的下載與安裝33
3.1.4 MySQL的下載與安裝34
3.1.5 Maven的下載與安裝35
3.2 基于Maven和Eclipse建立項目36
3.2.1 在Eclipse中創(chuàng)建Maven Web項目37
3.2.2 將Maven創(chuàng)建的Web項目導入Eclipse中38
3.2.3 Eclipse編譯器和項目特性修改39
3.3 Spring框架導入與項目目錄41
3.3.1 Spring核心包及相關(guān)依賴包的導入41
3.3.2 項目目錄結(jié)構(gòu)及創(chuàng)建42
3.4 簡單的完整實例43
第4章 Spring IoC容器進階46
4.1 Bean實例化的更多方式46
4.1.1 靜態(tài)內(nèi)部類46
4.1.2 靜態(tài)工廠方法47
4.1.3 實例工廠方法47
4.2 Bean的配置屬性48
4.2.1 Bean的作用域配置49
4.2.2 Bean初始化或銷毀的生命周期回調(diào)50
4.2.3 懶加載Bean51
4.2.4 Bean定義的繼承52
4.3 依賴注入的配置53
4.3.1 多個對象的依賴注入53
4.3.2 簡單類型的依賴注入55
4.3.3 集合類型的依賴注入58
4.3.4 內(nèi)部Bean的依賴注入59
4.3.5 Bean方法的替換59
4.3.6 自動裝配60
4.4 特殊的依賴配置61
4.4.1 depends-on前置依賴配置61
4.4.2 方法注入—不同作用域Bean的依賴配置62
4.4.3 循環(huán)依賴的解決63
4.5 XML配置進階64
4.5.1 依賴注入配置的簡寫64
4.5.2 多XML配置文件64
4.6 容器與Bean擴展點65
4.6.1 全局與容器生命周期回調(diào)65
4.6.2 容器加載定義擴展—BeanFactoryPostProcessor66
4.6.3 容器擴展點—BeanPostProcessor68
4.6.4 Aware接口—獲取容器資源68
4.7 Spring IoC容器綜述70
第5章 基于注解和代碼的配置73
5.1 Java注解73
5.1.1 Java基本注解73
5.1.2 Java注解標準75
5.2 Spring支持的注解類型與開啟方式76
5.2.1 Spring支持的注解類型76
5.2.2 Spring注解功能的開啟方式77
5.3 Spring支持的Java標準注解78
5.3.1 @PostConstruct和@PreDestroy78
5.3.2 @Named—組件注解78
5.3.3 @Resource—依賴注入注解79
5.3.4 @Inject—依賴注入79
5.4 Spring容器配置注解80
5.4.1 @Required—依賴項檢查80
5.4.2 @Autowired—依賴對象的自動裝配81
5.4.3 @Component—組件注解82
5.4.4 @Bean—方法層級的組件注解85
5.5 自動裝配的更多介紹86
5.5.1 自動裝配的required配置86
5.5.2 自動裝配的順序和選擇86
5.5.3 自動裝配的使用89
5.6 基于Java代碼的配置89
5.6.1 @Configuration——配置類注解90
5.6.2 Java代碼配置的容器初始化90
5.6.3 @ComponentScan—組件掃描注解91
5.6.4 @Import—配置類導入注解92
5.7 容器注解匯總92
第6章 Spring測試94
6.1 關(guān)于測試94
6.1.1 單元測試95
6.1.2 集成測試97
6.1.3 測試的一些概念97
6.2 Java測試框架98
6.2.1 JUnit單元測試框架98
6.2.2 JUnit批量測試102
6.2.3 JUnit運行器103
6.2.4 JUnit 4與JUnit 5的比較104
6.2.5 TestNG簡介及與JUnit的比較105
6.3 基于Spring的測試106
6.3.1 JUnit中加入Spring容器進行測試106
6.3.2 Spring測試模塊108
6.3.3 Spring測試模塊對單元測試的支持109
6.3.4 Spring測試框架111
6.4 Spring測試注解116
6.4.1 Spring測試專用的注解116
6.4.2 測試支持的標準注解119
6.4.3 基于JUnit 4支持的注解121
6.4.4 基于JUnit Jupiter(JUnit 5)支持的注解123
6.5 測試框架注解匯總125
第2篇 Spring MVC框架
第7章 Spring Web MVC概述128
7.1 HTTP Web基礎(chǔ)知識128
7.1.1 HTML與HTTP128
7.1.2 HTTP請求類型129
7.1.3 MIME類型129
7.1.4 狀態(tài)碼130
7.2 Java Web開發(fā)131
7.2.1 Servlet技術(shù)131
7.2.2 JSP技術(shù)138
7.2.3 MVC模式141
7.3 Spring MVC介紹與實例141
7.3.1 Spring MVC框架處理流程142
7.3.2 Spring Web快速Demo實例143
7.4 Spring MVC技術(shù)細節(jié)146
7.4.1 DispatcherServlet—中央控制器146
7.4.2 HandlerMapping—處理器映射器148
7.4.3 HandlerAdapter—處理器適配器150
7.4.4 視圖與視圖解析器153
7.5 Spring MVC注解配置155
7.5.1 組件與依賴注解156
7.5.2 請求映射與參數(shù)注解156
7.5.3 @ModelAttribute模型屬性注解160
7.6 基于代碼配置的Spring MVC項目162
7.6.1 Java代碼進行Spring MVC的容器配置162
7.6.2 Java代碼替代web.xml文件的入口配置163
7.7 MVC注解匯總164
第8章 數(shù)據(jù)類型的轉(zhuǎn)換、驗證與異常處理166
8.1 類型轉(zhuǎn)換166
8.1.1 屬性編輯器:PropertyEditor166
8.1.2 轉(zhuǎn)換器服務(wù):ConversionService168
8.1.3 類型轉(zhuǎn)換在容器中的使用173
8.2 數(shù)據(jù)綁定176
8.2.1 Bean封裝器:BeanWrapper176
8.2.2 數(shù)據(jù)綁定器:DataBinder與WebDataBinder178
8.2.3 綁定器初始化注解:@InitBinder180
8.2.4 HTTP消息轉(zhuǎn)換器:HttpMessageConverter181
8.3 數(shù)據(jù)驗證184
8.3.1 JavaBean標準校驗184
8.3.2 Spring核心容器的驗證186
8.3.3 Spring MVC容器的驗證188
8.3.4 驗證器配置及增加自定義驗證器189
8.3.5 驗證器使用層級及手動調(diào)用191
8.4 Spring MVC異常處理192
8.4.1 Controller類層級異常處理:@ExceptionHandler192
8.4.2 全局的異常處理:@ControllerAdvice193
8.4.3 XML配置異常處理194
第9章 Spring MVC進階195
9.1 靜態(tài)資源的放行195
9.1.1 配置Servlet處理靜態(tài)資源196
9.1.2 配置
放行動態(tài)資源196
9.1.3 配置
放行動態(tài)資源197
9.2 父子容器197
9.2.1 Spring的父子容器197
9.2.2 Spring MVC的父子容器200
9.2.3 Spring MVC父子容器的配置202
9.3 Spring MVC與JSON204
9.3.1 JSON介紹204
9.3.2 Java對JSON的支持206
9.3.3 Spring MVC使用JSON210
9.4 Spring MVC與REST214
9.4.1 REST的概念與應(yīng)用214
9.4.2 Spring MVC REST服務(wù)端:@RestController218
9.4.3 Spring MVC REST客戶端:RestTemplate219
9.5 文件上傳223
9.5.1 多部分表單數(shù)據(jù)類型:multipart/form-data223
9.5.2 Java文件上傳功能實現(xiàn)方式225
9.5.3 Spring MVC 文件上傳功能的實現(xiàn)方式228
9.5.4 Spring MVC文件上傳最佳實踐231
9.6 國際化233
9.6.1 Java國際化233
9.6.2 Spring國際化236
9.6.3 Spring MVC國際化237
9.6.4 語言環(huán)境解析器:LocaleResolver239
9.6.5 Spring MVC語言環(huán)境的動態(tài)修改244
9.6.6 Spring MVC國際化的使用245
第10章 Spring MVC測試框架247
10.1 Spring MVC測試概述247
10.1.1 Spring MVC的測試方式247
10.1.2 Spring Web測試實例與測試的整體框架248
10.2 模擬應(yīng)用服務(wù)(MockMvc)及其構(gòu)建器251
10.2.1 獨立測試MockMvc構(gòu)建器:StandaloneMockMvcBuilder251
10.2.2 集成測試MockMvc構(gòu)建器:DefaultMockMvcBuilder252
10.3 模擬請求構(gòu)造器254
10.3.1 模擬請求參數(shù)傳遞255
10.3.2 模擬請求構(gòu)造器的請求相關(guān)設(shè)置257
10.4 結(jié)果操作258
10.4.1 結(jié)果操作接口:ResultActions259
10.4.2 結(jié)果匹配器接口:ResultMatcher260
10.4.3 結(jié)果處理器:MockMvcResultHandlers265
10.4.4 獲取MvcResult后自定義驗證266
10.5 Spring MVC測試框架之其他266
10.5.1 測試代碼簡寫267
10.5.2 獨立測試的依賴處理268
10.5.3 文件上傳測試268
第3篇 數(shù)據(jù)技術(shù)
第11章 數(shù)據(jù)庫與Java數(shù)據(jù)訪問技術(shù)272
11.1 關(guān)系型數(shù)據(jù)庫介紹272
11.1.1 關(guān)系型數(shù)據(jù)庫產(chǎn)品272
11.1.2 關(guān)系型數(shù)據(jù)庫及其對象273
11.1.3 關(guān)系型數(shù)據(jù)庫事務(wù)274
11.1.4 SQL語言276
11.2 MySQL數(shù)據(jù)庫276
11.2.1 MySQL數(shù)據(jù)類型277
11.2.2 基于MySQL的基本SQL語句279
11.2.3 MySQL高級對象與功能281
11.3 Java數(shù)據(jù)訪問基本技術(shù)284
11.3.1 JDBC數(shù)據(jù)訪問284
11.3.2 Java數(shù)據(jù)庫連接池288
11.3.3 線程安全的數(shù)據(jù)庫連接293
11.4 ORM框架介紹294
11.4.1 Java常見的ORM框架294
11.4.2 Hibernate開發(fā)步驟與實例295
11.5 JPA—Java持久層應(yīng)用接口298
11.5.1 JPA的主要內(nèi)容299
11.5.2 JPA的主要概念和類301
11.5.3 JPA開發(fā)規(guī)范與步驟303
11.5.4 JPA之Hibernate實現(xiàn)實例303
11.5.5 JPA之Eclipse Link實現(xiàn)實例305
第12章 MyBatis入門310
12.1 MyBatis介紹與快速入門實例310
12.1.1 MyBatis介紹310
12.1.2 MyBatis快速入門實例311
12.2 MyBatis核心接口和類314
12.2.1 SqlSession(SQL會話接口)315
12.2.2 SqlSessionFactory(SQL會話工廠接口)316
12.2.3 SqlSessionFactoryBuilder(SQL會話工廠構(gòu)建類)316
12.2.4 Configuration(配置類)317
12.3 MyBatis XML全局配置文件318
12.3.1 配置文件的結(jié)構(gòu)318
12.3.2 環(huán)境配置319
12.3.3 屬性與屬性文件配置321
12.3.4 映射引用配置322
12.3.5 MyBatis特性設(shè)置323
12.4 XML映射文件配置325
12.4.1