《Spring 5高級編程(第5版)》是2019年1月1日由清華大學出版社出版的圖書,作者是尤莉安娜·科斯米納、羅布·哈羅、克里斯·舍弗、克拉倫斯等。
出版信息,內容簡介,目錄,
出版信息
Spring 5高級編程(第5版)
作者:[美]尤莉安娜 ? 科斯米納(Iuliana Cosmina) 、羅布 ? 哈羅(Rob Harrop)、克里斯 ? 舍弗(Chris Schaefer)、克拉倫斯 ?
定價:128元
印次:1-1
ISBN:9787302516446
出版日期:2019.01.01
印刷日期:2018.11.28
定價:128元
印次:1-1
ISBN:9787302516446
出版日期:2019.01.01
印刷日期:2018.11.28
內容簡介
《Spring 5高級編程(第5版)》涵蓋核心的Spring 及其與其他領先的Java 技術(比如Hibernate、JPA 2、Tiles、Thymeleaf 和WebSocket)的集成。重點介紹如何使用Java 配置類、lambda 表達式、Spring Boot 以及反應式編程。同時,將與企業級應用程式開發人員分享一些見解和實際經驗,包括遠程處理、事務、Web 和表示層,等等。
目錄
第1章Spring介紹 1
1.1什麼是Spring 1
1.1.1Spring框架的演變 1
1.1.2翻轉控制或依賴注入 5
1.1.3依賴注入的演變 6
1.1.4除了依賴注入 7
1.2Spring項目 10
1.2.1Spring的起源 10
1.2.2Spring社區 10
1.2.3Spring工具套件 11
1.2.4SpringSecurity項目 11
1.2.5SpringBoot 11
1.2.6Spring批處理和集成 11
1.2.7許多其他項目 11
1.3Spring的替代品 12
1.3.1JBossSeam框架 12
1.3.2GoogleGuice 12
1.3.3PicoContainer 12
1.3.4JEE7容器 12
1.4小結 12
第2章入門 13
2.1獲取Spring框架 13
2.1.1快速入門 13
2.1.2在GitHub中查找Spring 14
2.1.3使用正確的JDK 14
2.2了解Spring打包 14
2.2.1為自己的應用程式選擇模組 15
2.2.2在Maven存儲庫上訪問Spring模組 15
2.2.3使用Gradle訪問Spring模組 16
2.2.4使用Spring文檔 17
2.2.5將Spring放入HelloWorld中 17
2.2.6構建示例HelloWorld應用程式 17
2.2.7用Spring重構 20
2.3小結 22
第3章在Spring中引入IoC和DI 23
3.1控制反轉和依賴注入 23
3.2控制反轉的類型 23
3.2.1依賴拉取 24
3.2.2上下文依賴查找 24
3.2.3構造函式依賴注入 25
3.2.4setter依賴注入 25
3.2.5注入與查找 25
3.2.6setter注入與構造函式注入 26
3.3Spring中的控制反轉 28
3.4Spring中的依賴注入 28
3.4.1bean和BeanFactory 28
3.4.2BeanFactory實現 29
3.4.3ApplicationContext 30
3.5配置ApplicationContext 30
3.5.1設定Spring配置選項 30
3.5.2基本配置概述 30
3.5.3聲明Spring組件 31
3.5.4使用方法注入 53
3.5.5了解bean命名 60
3.5.6了解bean實例化模式 66
3.6解析依賴項 69
3.7自動裝配bean 71
3.8設定bean繼承 77
3.9小結 79
第4章詳述Spring配置和SpringBoot 80
4.1Spring對應用程式可移植性的影響 80
4.2管理bean生命周期 81
4.3掛鈎到bean的創建 82
4.3.1在創建bean時執行方法 82
4.3.2實現InitializingBean接口 84
4.3.3使用JSR-250@PostConstruct註解 86
4.4使用@Bean聲明一個初始化方法 88
4.5掛鈎到bean的銷毀 89
4.5.1在bean被銷毀時執行一個方法 89
4.5.2實現DisposableBean接口 91
4.5.3使用JSR-250@PreDestroy註解 92
4.6使用@Bean聲明銷毀方法 93
4.7了解解析的順序 94
4.8讓Spring感知bean 94
4.8.1使用BeanNameAware接口 95
4.8.2使用ApplicationContextAware接口 96
4.9使用FactoryBean 97
4.10直接訪問FactoryBean 100
4.11使用factory-bean和factory-method屬性 101
4.12JavaBeanPropertyEditor 102
4.12.1使用內置的PropertyEditor 102
4.12.2創建自定義PropertyEditor 106
4.13更多的SpringApplicationContext配置 108
4.13.1使用MessageSource進行國際化 108
4.13.2在獨立的應用程式中使用
MessageSource 110
4.13.3應用程式事件 111
4.14訪問資源 112
4.15使用Java類進行配置 113
4.15.1Java中的ApplicationContext配置 113
4.15.2Spring混合配置 119
4.15.3Java或XML配置? 121
4.16配置檔案 121
4.17使用Java配置來配置Spring配置檔案 123
4.18Environment和PropertySource抽象 125
4.19使用JSR-330註解進行配置 128
4.20使用Groovy進行配置 130
4.21SpringBoot 132
4.22小結 135
第5章SpringAOP 136
5.1AOP概念 137
5.2AOP的類型 137
5.2.1使用靜態AOP 137
5.2.2使用動態AOP 137
5.2.3選擇AOP類型 138
5.3Spring中的AOP 138
5.3.1AOPAlliance 138
5.3.2AOP中的HelloWorld示例 138
5.4SpringAOP架構 139
5.4.1Spring中的連線點 139
5.4.2Spring中的切面 140
5.4.3關於ProxyFactory類 140
5.4.4在Spring中創建通知 140
5.4.5通知的接口 141
5.4.6創建前置通知 141
5.4.7通過使用前置通知保護方法訪問 142
5.4.8創建後置返回通知 145
5.4.9創建環繞通知 147
5.4.10創建異常通知 148
5.4.11選擇通知類型 150
5.5在Spring中使用顧問和切入點 150
5.5.1Pointcut接口 151
5.5.2可用的切入點實現 152
5.5.3使用DefaultPointcutAdvisor 152
5.5.4使用StaticMethodMatcherPointcut創建靜態切入點 153
5.5.5使用DyanmicMethodMatcherPointcut創建動態切入點 155
5.5.6使用簡單名稱匹配 157
5.5.7用正則表達式創建切入點 158
5.5.8使用AspectJ切入點表達式創建切入點 159
5.5.9創建註解匹配切入點 160
5.5.10便捷的Advisor實現 161
5.6了解代理 161
5.6.1使用JDK動態代理 162
5.6.2使用CGLIB代理 162
5.6.3比較代理性能 163
5.6.4選擇要使用的代理 165
5.7切入點的高級使用 166
5.7.1使用控制流切入點 166
5.7.2使用組合切入點 168
5.7.3組合和切入點接口 170
5.7.4切入點小結 170
5.8引入入門 170
5.8.1引入的基礎知識 171
5.8.2使用引入進行對象修改檢測 172
5.8.3引入小結 175
5.9AOP的框架服務 175
5.9.1以聲明的方式配置AOP 175
5.9.2使用ProxyFactoryBean 176
5.9.3使用aop名稱空間 180
5.10使用@AspectJ樣式註解 184
5.11AspectJ集成 189
5.11.1關於AspectJ 189
5.11.2使用單例切面 189
5.12小結 191
第6章SpringJDBC支持 192
6.1介紹Lambda表達式 192
6.2示例代碼的示例數據模型 193
6.3研究JDBC基礎結構 196
6.4SpringJDBC基礎結構 199
6.5資料庫連線和數據源 200
6.6嵌入資料庫支持 203
6.7在DAO類中使用DataSource 204
6.8異常處理 206
6.9JdbcTemplate類 207
6.9.1在DAO類中初始化JdbcTemplate 207
6.9.2通過NamedParameterJdbcTemplate使用命名參數 209
6.9.3使用RowMapper<T>檢索域對象 210
6.10使用ResultSetExtractor檢索嵌套域對象 211
6.11建模JDBC操作的Spring類 213
6.12使用MappingSqlQuery<T>查詢數據 215
6.13插入數據並檢索生成的鍵 220
6.14使用BatchSqlUpdate進行批處理操作 221
6.15使用SqlFunction調用存儲函式 225
6.16SpringData項目:JDBCExtensions 226
6.17使用JDBC的注意事項 226
6.18SpringBootJDBC 227
6.19小結 229
第7章在Spring中使用Hibernate 230
7.1示例代碼的示例數據模型 230
7.2配置Hibernate的SessionFactory 232
7.3使用Hibernate註解的ORM映射 234
7.3.1簡單的映射 235
7.3.2一對多映射 238
7.3.3多對多映射 239
7.4Hibernate會話接口 240
7.4.1使用Hibernate查詢語言查詢數據 241
7.4.2使用延遲獲取進行簡單查詢 241
7.4.3使用關聯獲取進行查詢 243
7.5插入數據 245
7.6更新數據 248
7.7刪除數據 249
7.8配置Hibernate以便從實體生成表 250
7.9註解方法或欄位? 252
7.10使用Hibernate時的注意事項 254
7.11小結 254
第8章在Spring中使用JPA2進行數據訪問 255
8.1JPA2.1介紹 255
8.1.1示例代碼的示例數據模型 256
8.1.2配置JPA的EntityManagerFactory 256
8.1.3使用JPA註解進行ORM映射 258
8.2使用JPA執行資料庫操作 259
8.2.1使用Java持久化查詢語言來查詢數據 260
8.2.2查詢非類型化結果 266
8.3使用構造函式表達式查詢自定義結果類型 267
8.3.1插入數據 269
8.3.2更新數據 271
8.3.3刪除數據 272
8.4使用本地查詢 273
8.5使用簡單的本地查詢 273
8.6使用SQLResultSet映射進行本地查詢 274
8.7SpringDataJPA介紹 278
8.7.1添加SpringDataJPA庫依賴項 279
8.7.2使用SpringDataJPARepository抽象
進行資料庫操作 279
8.8使用JpaRepository 283
8.9帶有自定義查詢的SpringDataJPA 284
8.10通過使用HibernateEnvers保存
實體版本 293
8.10.1為實體版本控制添加表 293
8.10.2為實體版本控制配置
EntityManagerFactory 294
8.10.3啟用實體版本控制和歷史檢索 296
8.10.4測試實體版本控制 297
8.11SpringBootJPA 298
8.12使用JPA時的注意事項 302
8.13小結 302
第9章事務管理 303
9.1研究Spring事務抽象層 303
9.2PlatformTransactionManager的實現 304
9.3分析事務屬性 305
9.3.1TransactionDefinition接口 305
9.3.2TransactionStatus接口 306
9.4示例代碼的示例數據模型和基礎結構 307
9.4.1創建一個帶有依賴項的簡單SpringJPA項目 307
9.4.2示例數據模型和通用類 308
9.4.3使用AOP配置進行事務管理 315
9.5使用編程式事務 316
9.6使用Spring實現全局事務 318
9.6.1實現JTA示例的基礎結構 318
9.6.2使用JTA實現全局事務 319
9.6.3SpringBootJTA 325
9.6.4使用JTA事務管理器的注意事項 328
9.7小結 329
第10章使用類型轉換和格式化進行驗證 330
10.1依賴項 330
10.2Spring類型轉換系統 331
10.3使用PropertyEditors從字元串進行轉換 331
10.4Spring類型轉換介紹 333
10.4.1實現自定義轉換器 333
10.4.2配置ConversionService 334
10.4.3任意類型之間的轉換 335
10.5Spring中的欄位格式化 338
10.5.1實現自定義格式化器 338
10.5.2配置ConversionServiceFactoryBean 339
10.6Spring中的驗證 340
10.6.1使用SpringValidator接口 340
10.6.2使用JSR-349BeanValidation 342
10.6.3在Spring中配置BeanValidation支持 343
10.6.4創建自定義驗證器 344
10.7使用AssertTrue進行自定義驗證 346
10.8自定義驗證的注意事項 347
10.9決定使用哪種驗證API 347
10.10小結 347
第11章任務調度 348
11.1任務調度示例的依賴項 348
11.2Spring中的任務調度 349
11.2.1SpringTaskScheduler抽象介紹 349
11.2.2研究示例任務 350
11.2.3使用註解進行任務調度 355
11.2.4Spring中異步任務的執行 357
11.3Spring中任務的執行 359
11.4小結 360
第12章使用Spring遠程處理 361
12.1使用示例的數據模型 362
12.2為JPA後端添加必需的依賴項 363
12.3實現和配置SingerService 364
12.3.1實現SingerService 364
12.3.2配置SingerService 365
12.3.3公開服務 367
12.3.4調用服務 368
12.4在Spring中使用JMS 369
12.4.1在Spring中實現JMS監聽器 371
12.4.2在Spring中傳送JMS訊息 372
12.5SpringBootArtemis啟動器 373
12.6在Spring中使用RESTful-WS 375
12.6.1RESTfulWeb服務介紹 375
12.6.2為示例添加必需的依賴項 376
12.6.3設計SingerRESTfulWeb服務 376
12.6.4使用SpringMVC展示REST樣式的Web服務 376
12.7配置CastorXML 377
12.7.1實現SingerController 378
12.7.2配置SpringWeb應用程式 380
12.7.3使用curl測試RESTful-WS 382
12.7.4使用RestTemplate訪問RESTful-WS 383
12.7.5使用SpringSecurity來保護
RESTful-WS 386
12.8使用SpringBoot開發RESTful-WS 389
12.9在Spring中使用AMQP 392
12.10小結 397
第13章Spring測試 398
13.1測試類別介紹 398
13.2使用Spring測試註解 399
13.3實施邏輯單元測試 400
13.3.1添加所需的依賴項 400
13.3.2單元測試SpringMVC控制器 401
13.4實現集成測試 403
13.4.1添加所需的依賴項 403
13.4.2配置用於服務層測試的配置檔案 403
13.4.3Java配置版本 404
13.4.4實施基礎結構類 405
13.4.5對服務層進行單元測試 408
13.4.6丟棄DbUnit 410
13.5實現前端單元測試 413
13.6小結 413
第14章Spring中的腳本支持 414
14.1在Java中使用腳本支持 414
14.2Groovy介紹 415
14.2.1動態類型化 416
14.2.2簡化的語法 416
14.2.3閉包 417
14.3與Spring一起使用Groovy 418
14.3.1開發Singer對象域 418
14.3.2實現規則引擎 418
14.3.3將規則工廠實現為Spring可刷新bean 420
14.3.4測試年齡分類規則 421
14.3.5內聯動態語言代碼 423
14.4小結 424
第15章應用程式監控 425
15.1Spring中的JMX支持 425
15.2將Springbean導出為JMX 425
15.3使用JavaVisualVM進行JMX監控 426
15.4監視Hibernate統計信息 428
15.5使用了SpringBoot的JMX 429
15.6小結 431
第16章Web應用程式 432
16.1實現示例的服務層 433
16.1.1對示例使用數據模型 433
16.1.2實現DAO層 435
16.1.3實現服務層 435
16.2配置SingerService 436
16.3MVC和SpringMVC介紹 437
16.3.1MVC介紹 438
16.3.2SpringMVC介紹 438
16.3.3SpringMVCWebApplicationContext層次結構 439
16.3.4SpringMVC請求生命周期 439
16.3.5SpringMVC配置 440
16.3.6在SpringMVC中創建第一個視圖 442
16.3.7配置DispatcherServlet 443
16.3.8實現SingerController 444
16.3.9實現歌手列表視圖 445
16.3.10測試歌手列表視圖 445
16.4理解SpringMVC項目結構 445
16.5實現國際化(il8n) 446
16.5.1在DispatcherServlet配置中配置國際化 446
16.5.2為國際化支持而修改歌手列表視圖 448
16.6使用主題和模板 448
16.7使用ApacheTiles查看模板 450
16.7.1設計模板布局 450
16.7.2實現頁面布局組件 451
16.8在SpringMVC中配置Tiles 453
16.9實現歌手信息視圖 454
16.9.1將URL映射到視圖 454
16.9.2實現顯示歌手視圖 454
16.9.3實現編輯歌手視圖 456
16.9.4實現添加歌手視圖 459
16.9.5啟用JSR-349(bean驗證) 460
16.10使用jQuery和jQueryUI 462
16.10.1jQuery和jQueryUI介紹 462
16.10.2在視圖中使用jQuery和jQueryUI 462
16.10.3使用CKEditor進行富文本編輯 463
16.10.4使用jqGrid實現具有分頁支持的數據格線 464
16.10.5在歌手列表視圖中啟用jqGrid 464
16.10.6在伺服器端啟用分頁 466
16.11處理檔案上傳 468
16.11.1配置檔案上傳支持 468
16.11.2修改視圖以支持檔案上傳 469
16.11.3修改控制器以支持檔案上傳 470
16.12用SpringSecurity保護Web應用程式 471
16.12.1配置Spring安全性 471
16.12.2將登錄功能添加到應用程式中 473
16.12.3使用註解來保護控制器方法 475
16.13使用SpringBoot創建SpringWeb
應用程式 475
16.14設定DAO層 476
16.14.1設定服務層 477
16.14.2設定Web層 478
16.14.3設定Spring安全性 479
16.15創建Thymeleaf視圖 479
16.16使用Thymeleaf擴展 482
16.17小結 486
第17章WebSocket 487
17.1WebSocket介紹 487
17.2與Spring一起使用WebSocket 487
17.3使用WebSocketAPI 488
17.4使用STOMP傳送訊息 496
17.5小結 500
第18章Spring項目:批處理、集成和XD等 501
18.1SpringBatch 502
18.2JSR-352 507
18.3SpringBootBatch 509
18.4SpringIntegration 512
18.5SpringXD 516
18.6Spring框架的五個最顯著的功能 517
18.6.1功能性Web框架 518
18.6.2Java9互操作性 526
18.6.3JDK模組化 526
18.6.4使用Java9和SpringWebFlux進行反應式編程 528
18.6.5Spring支持JUnit5Jupiter 529
18.7小結 536
附錄A設定開發環境 537