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