Spring是一個開源的輕量級Java開發(fā)框架,主要用于解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性,簡化應(yīng)用程序的開發(fā)。
本書以“菜譜”的方式,介紹了Spring開發(fā)期間會遇到的各種需求、問題以及相應(yīng)的解決方案。本書分為17章,主要內(nèi)容有Spring開發(fā)工具的簡單介紹;Spring是什么、如何配置、如何使用;如何使用Spring Web MVC框架進(jìn)行基于Web的開發(fā);Spring對Restful Web Service的支持;Spring MVC的異步處理;使用Spring Social集成社交網(wǎng)絡(luò);使用Spring Security保護(hù)應(yīng)用;使用Spring Mobile在應(yīng)用中集成移動設(shè)備檢測和使用功能;如何使用Spring訪問數(shù)據(jù);Spring事務(wù)管理;使用Spring Batch框架對大型機(jī)領(lǐng)域的解決方案進(jìn)行建模;Spring與NoSQL和Hadoop的混合使用;Spring Java企業(yè)服務(wù)與遠(yuǎn)程技術(shù);Spring消息機(jī)制;使用Spring Integration框架集成不同的服務(wù)與數(shù)據(jù);Spring Framework的單元測試;Grails框架的簡單介紹。
《Spring 5攻略》適合對Java開發(fā)和企業(yè)應(yīng)用集成有一定了解,希望在實際開發(fā)中掌握一種全面、快速、可伸縮、可移植的工具平臺的開發(fā)人員閱讀。
1.本書提供了完整且真實的代碼示例,且代碼資源可免費(fèi)下載,可用于解決在使用Spring 5開發(fā)時遇到的幾乎所有問題。
2.本書除了介紹Spring的基礎(chǔ)知識之外,還介紹了Spring企業(yè)級開發(fā)的一些解決方案以及Spring Web服務(wù)相關(guān)的一些知識。
3.大家還可以在本書中看到與Spring Framework 5、響應(yīng)式Spring、Spring 5微服務(wù)等相關(guān)的主題。
4.本書專注于使用Spring Framework 5的特性來構(gòu)建企業(yè)級的Java應(yīng)用程序。
Marten Deinum是開源Spring Framework項目的提交者,也是Conspect公司的Java/軟件咨詢師,為各種小型和大型公司開發(fā)并架構(gòu)軟件(主要基于Java)。他是一位熱忱的開源用戶,并且是Spring Framework的長期粉絲、用戶與擁護(hù)者。他擁有多個角色,包括軟件工程師、開發(fā)負(fù)責(zé)人和Java與Spring培訓(xùn)師。
Daniel Rubio擁有10年以上的企業(yè)與Web軟件經(jīng)驗,目前是MashupSoft網(wǎng)站的創(chuàng)始人與技術(shù)負(fù)責(zé)人。他已經(jīng)為Apress編寫了多本著作。Daniel的經(jīng)驗主要集中在Java、Spring、Python、Django、JavaScript/CSS和HTML上。
Josh Long是一名Spring開發(fā)大使,目前就職于Pivotal。Josh是一位Java擁躉,5本圖書的作者(包括O’Reilly即將出版的Cloud Native Java),也是3個銷售**的培訓(xùn)視頻的作者(包括與Phil Webb合作的Building Microservices with Spring Boot),同時還是一位開源貢獻(xiàn)者(Spring Boot、Spring Integration、Spring Cloud、Activiti和Vaadin)。
第 1章 Spring開發(fā)工具 1
1-1 使用Spring Tool Suite構(gòu)建Spring應(yīng)用 1
1-2 使用IntelliJ IDE構(gòu)建Spring應(yīng)用 5
1-3 使用Maven命令行界面構(gòu)建Spring應(yīng)用 8
1-4 使用Maven wrapper構(gòu)建Spring應(yīng)用 9
1-5 使用Gradle命令行界面構(gòu)建Spring應(yīng)用 10
1-6 使用Gradle wrapper構(gòu)建Spring應(yīng)用 11
小結(jié) 11
第 2章 Spring核心任務(wù) 12
2-1 使用Java config來配置POJO 12
2-2 通過調(diào)用構(gòu)造方法創(chuàng)建POJO 17
2-3 使用POJO引用與自動裝配和其他POJO進(jìn)行交互 19
2-4 使用@Resource與@Inject注解自動裝配POJO 24
2-5 使用@Scope注解設(shè)置POJO的作用域 26
2-6 使用來自于外部資源(文本文件、XML文件、屬性文件或圖像文件)的
數(shù)據(jù) 28
2-7 針對不同地域的屬性文件解析i18n文本信息 31
2-8 使用注解自定義POJO初始化與銷毀動作 33
2-9 創(chuàng)建后置處理器來驗證和修改POJO 36
2-10 使用工廠(靜態(tài)工廠、實例方法與Spring的FactoryBean)創(chuàng)建POJO 39
2-11 使用Spring環(huán)境與profile加載不同的POJO 42
2-12 讓POJO能夠感知到Spring的IoC容器資源 44
2-13 使用注解實現(xiàn)面向切面編程 45
2-14 訪問連接點信息 52
2-15 通過@Order注解指定切面的順序 52
2-16 重用切面的切點定義 54
2-17 編寫AspectJ切點表達(dá)式 55
2-18 使用AOP為POJO添加引介 58
2-19 使用AOP為POJO引入狀態(tài) 60
2-20 在Spring中使用加載期編織的AspectJ切面 62
2-21 在Spring中配置AspectJ切面 65
2-22 使用AOP將POJO注入到領(lǐng)域?qū)ο笾小?6
2-23 使用Spring與TaskExecutor實現(xiàn)并發(fā) 68
2-24 在POJO間實現(xiàn)應(yīng)用事件通信 73
小結(jié) 75
第3章 Spring MVC 77
3-1 使用Spring MVC開發(fā)一個簡單的Web應(yīng)用 77
3-2 使用@RequestMapping映射請求 86
3-3 使用處理器攔截器攔截請求 89
3-4 解析用戶地域 92
3-5 外部化地域相關(guān)的文本信息 94
3-6 根據(jù)名字解析視圖 95
3-7 使用視圖與內(nèi)容協(xié)商 97
3-8 將異常映射到視圖 99
3-9 使用控制器處理表單 101
3-10 使用向?qū)П韱慰刂破魈幚矶囗撁姹韱巍?11
3-11 使用注解進(jìn)行bean驗證(JSR-303) 120
3-12 創(chuàng)建Excel與PDF視圖 121
小結(jié) 126
第4章 Spring REST 127
4-1 使用REST服務(wù)發(fā)布XML 127
4-2 使用REST服務(wù)發(fā)布JSON 133
4-3 使用Spring訪問REST服務(wù) 137
4-4 發(fā)布RSS與Atom源 139
小結(jié) 146
第5章 Spring MVC:異步處理 147
5-1 使用控制器與TaskExecutor異步處理請求 147
5-2 使用響應(yīng)寫入器 153
5-3 使用異步攔截器 156
5-4 使用WebSocket 158
5-5 使用Spring WebFlux開發(fā)反應(yīng)式應(yīng)用 164
5-6 使用反應(yīng)式控制器處理表單 172
5-7 使用反應(yīng)式REST服務(wù)發(fā)布和消費(fèi)JSON 182
5-8 使用異步Web客戶端 183
5-9 編寫反應(yīng)式處理器函數(shù) 186
小結(jié) 188
第6章 Spring Social 189
6-1 搭建Spring Social 189
6-2 連接到Twitter 190
6-3 連接到Facebook 193
6-4 展示服務(wù)提供者的連接狀態(tài) 195
6-5 使用Twitter API 199
6-6 使用持久化的UsersConnectionRepository 200
6-7 集成Spring Social與Spring Security 201
小結(jié) 208
第7章 Spring Security 209
7-1 保護(hù)URL訪問 209
7-2 登錄到Web應(yīng)用 213
7-3 對用戶進(jìn)行認(rèn)證 217
7-4 做出訪問控制決策 224
7-5 保護(hù)方法調(diào)用 229
7-6 處理視圖安全 232
7-7 處理領(lǐng)域?qū)ο蟮陌踩?33
7-8 向WebFlux應(yīng)用中添加安全 239
小結(jié) 242
第8章 Spring Mobile 243
8-1 不使用Spring Mobile來檢測設(shè)備 243
8-2 使用Spring Mobile來檢測設(shè)備 246
8-3 使用站點首選項 247
8-4 使用設(shè)備信息來渲染視圖 249
8-5 實現(xiàn)站點切換 252
小結(jié) 253
第9章 數(shù)據(jù)訪問 254
9-1 使用JDBC模板來更新數(shù)據(jù)庫 259
9-2 使用JDBC模板查詢數(shù)據(jù)庫 263
9-3 簡化JDBC模板的創(chuàng)建 267
9-4 在JDBC模板中使用具名參數(shù) 269
9-5 在Spring JDBC框架中處理異常 271
9-6 直接使用ORM框架來避免問題 274
9-7 在Spring中配置ORM資源工廠 282
9-8 使用Hibernate的上下文會話持久化對象 287
9-9 使用JPA的上下文注入來持久化對象 289
9-10 使用Spring Data JPA簡化JPA操作 292
小結(jié) 293
第 10章 Spring事務(wù)管理 294
10-1 使用事務(wù)管理來避免問題 294
10-2 選擇一種事務(wù)管理器實現(xiàn) 299
10-3 使用事務(wù)管理器API以編程的方式管理事務(wù) 300
10-4 使用事務(wù)模板以編程的方式管理事務(wù) 302
10-5 使用@Transactional注解以聲明的方式管理事務(wù) 304
10-6 設(shè)置傳播事務(wù)屬性 305
10-7 設(shè)置隔離事務(wù)屬性 308
10-8 設(shè)置回滾事務(wù)屬性 314
10-9 設(shè)置超時與只讀事務(wù)屬性 314
10-10 使用加載期編織來管理事務(wù) 315
小結(jié) 315
第 11章 Spring Batch 316
11-1 搭建Spring Batch基礎(chǔ)設(shè)施 317
11-2 讀寫數(shù)據(jù) 321
11-3 編寫自定義ItemWriter與ItemReader 326
11-4 在寫入前處理輸入 328
11-5 通過事務(wù)增強(qiáng)健壯性 330
11-6 重試 331
11-7 控制步驟的執(zhí)行 333
11-8 啟動任務(wù) 337
11-9 參數(shù)化任務(wù) 340
小結(jié) 341
第 12章 Spring與NoSQL 342
12-1 使用MongoDB 342
12-2 使用Redis 352
12-3 使用Neo4j 357
12-4 使用Couchbase 370
小結(jié) 382
第 13章 Spring Java企業(yè)服務(wù)與遠(yuǎn)程技術(shù) 383
13-1 將Spring POJO注冊為JMX MBean 383
13-2 發(fā)布并監(jiān)聽JMX通知 393
13-3 在Spring中訪問遠(yuǎn)程JMX MBean 395
13-4 使用Spring的郵件支持來發(fā)送郵件 398
13-5 借助Spring的Quartz支持來調(diào)度任務(wù) 404
13-6 使用Spring的調(diào)度支持來調(diào)度任務(wù) 408
13-7 通過RMI公開和調(diào)用服務(wù) 410
13-8 通過HTTP公開和調(diào)用服務(wù) 413
13-9 使用JAX-WS公開和調(diào)用SOAP Web Service 415
13-10 使用契約優(yōu)先的SOAP Web Service 420
13-11 使用Spring-WS公開和調(diào)用SOAP Web Service 423
13-12 使用Spring-WS與XML編組來開發(fā)SOAP Web Service 429
小結(jié) 433
第 14章 Spring消息機(jī)制 434
14-1 使用Spring發(fā)送和接收J(rèn)MS消息 434
14-2 轉(zhuǎn)換JMS消息 443
14-3 管理JMS事務(wù) 445
14-4 在Spring中創(chuàng)建消息驅(qū)動的POJO 446
14-5 緩存與池化JMS連接 451
14-6 使用Spring發(fā)送和接收AMQP消息 452
14-7 使用Spring Kafka發(fā)送和接收消息 457
小結(jié) 463
第 15章 Spring Integration 464
15-1 使用EAI進(jìn)行系統(tǒng)集成 464
15-2 使用JMS集成兩個系統(tǒng) 466
15-3 查詢Spring Integration消息以獲取上下文信息 469
15-4 使用文件系統(tǒng)來集成兩個系統(tǒng) 471
15-5 將消息由一種類型轉(zhuǎn)換為另一種類型 473
15-6 使用Spring Integration進(jìn)行錯誤處理 476
15-7 派生集成控制:分割器與聚合器 478
15-8 使用路由器實現(xiàn)條件路由 481
15-9 使用Spring Batch發(fā)起事件 481
15-10 使用網(wǎng)關(guān) 484
小結(jié) 489
第 16章 Spring測試 490
16-1 使用JUnit與TestNG創(chuàng)建測試 490
16-2 創(chuàng)建單元測試與集成測試 494
16-3 為Spring MVC控制器實現(xiàn)單元測試 501
16-4 在集成測試中管理應(yīng)用上下文 502
16-5 向集成測試注入測試構(gòu)件 506
16-6 在集成測試中管理事務(wù) 507
16-7 在集成測試中訪問數(shù)據(jù)庫 511
16-8 使用Spring常見的測試注解 513
16-9 為Spring MVC控制器實現(xiàn)集成測試 513
16-10 為REST客戶端編寫集成測試 516
小結(jié) 519
第 17章 Grails 520
17-1 獲取并安裝Grails 520
17-2 創(chuàng)建Grails應(yīng)用 521
17-3 獲取Grails插件 523
17-4 Grails環(huán)境中的開發(fā)、生產(chǎn)與測試 524
17-5 創(chuàng)建應(yīng)用的領(lǐng)域類 525
17-6 為應(yīng)用的領(lǐng)域類生成CRUD控制器與視圖 527
17-7 為消息屬性實現(xiàn)國際化(I18n) 529
17-8 變更持久化存儲系統(tǒng) 531
17-9 定制日志輸出 533
17-10 運(yùn)行單元與集成測試 535
17-11 使用自定義布局與模板 539
17-12 使用GORM查詢 542
17-13 創(chuàng)建自定義標(biāo)簽 543
17-14 添加安全 544
小結(jié) 547