Spring 5 高級編程, 5/e

Luliana Cosmina

買這商品的人也買了...

商品描述

在閱讀完這本經典的著作後,你將能夠使用Spring的強大功能至上而下地構建複雜的Spring應用程序。
對於Java程序員和開發人員來說,敏捷、輕量級的開源Spring框架已成為事實上的主流企業級Java應用開發框架,同時還能整合其他領先的開源、敏捷和輕量級Java技術,比如Hibernate、Groovy、MyBatis等。此外,Spring也可以使用Java EE和JPA 2。

作者簡介

作者:[美]尤莉安娜.科斯米納(Iuliana Cosmina) 、羅布.哈羅(Rob Harrop)、克里斯.舍弗(Chris Schaefer)、克拉倫斯.厚(Clarence Ho) 著

目錄大綱

第1章Spring介紹1 
1.1什麼是Spring 1 
1.1.1 Spring框架的演變1 
1.1.2翻轉控製或依賴注入5 
1.1.3依賴注入的演變6 
1.1.4除了依賴注入7 
1.2 Spring項目10 
1.2. 1 Spring的起源10 
1.2.2 Spring社區10 
1.2.3 Spring工具套件11 
1.2.4 Spring Security項目11 
1.2.5 Spring Boot 11 
1.2.6 Spring批處理和集成11 
1.2.7許多其他項目11 
1.3 Spring的替代品12 
1.3.1 JBoss Seam框架12 
1.3.2 Google Guice 12 
1.3.3 PicoContainer 12 
1.3.4 JEE 7容器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放入Hello World中17 
2.2.6構建示例Hello World應用程序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.4 setter依賴注入25 
3.2.5注入與查找25 
3.2.6 setter注入與構造函數注入26 
3.3 Spring中的控制反轉28 
3.4 Spring中的依賴注入28 
3.4.1 bean和BeanFactory 28 
3.4.2 BeanFactory實現29 
3.4.3 ApplicationContext 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配置和Spring Boot 80 
4.1 Spring對應用程序可移植性的影響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.12 JavaBean PropertyEditor 102 
4.12.1使用內置的PropertyEditor 102 
4.12.2創建自定義PropertyEditor 106 
4.13更多的Spring ApplicationContext配置108 
4.13. 1使用MessageSource進行國際化108 
4.13.2在獨立的應用程序中使用
MessageSource 110 
4.13.3應用程序事件111 
4.14訪問資源112 
4.15使用Java類進行配置113 
4.15.1 Java中的ApplicationContext配置113 
4.15.2 Spring混合配置119 
4.15.3 Java或XML配置?121 
4.16配置文件121 
4.17使用Java配置來配置Spring配置文件123 
4.18 Environment和PropertySource抽象125 
4.19使用JSR-330註解進行配置128 
4.20使用Groovy進行配置130 
4.21 Spring Boot 132
4.22小結135 


第5章Spring AOP 136 
5.1 AOP概念137 
5.2 AOP的類型137 
5.2.1使用靜態AOP 137 
5.2.2使用動態AOP 137 
5.2.3選擇AOP類型138 
5.3 Spring中的AOP 138 
5.3.1 AOP Alliance 138 
5.3.2 AOP中的Hello World示例138 
5.4 Spring AOP架構139 
5.4.1 Spring中的連接點139 
5.4.2 Spring中的切面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.1 Pointcut接口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.9 AOP的框架服務175 
5.9.1以聲明的方式配置AOP 175 
5.9.2使用ProxyFactoryBean 176 
5.9.3使用aop名稱空間180
5.10使用@AspectJ樣式註解184 
5.11 AspectJ集成189 
5.11.1關於AspectJ 189 
5.11.2使用單例切面189 
5.12小結191 


第6章Spring JDBC支持192 
6.1介紹Lambda表達式192 
6.2示例代碼的示例數據模型193 
6.3研究JDBC基礎結構196 
6.4 Spring JDBC基礎結構199 
6.5數據庫連接和數據源200 
6.6嵌入數據庫支持203 
6.7在DAO類中使用DataSource 204 
6.8異常處理206 
6.9 JdbcTemplate類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.16 Spring Data項目:JDBC Extensions 226 
6.17使用JDBC的注意事項226 
6.18 Spring Boot JDBC 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.4 Hibernate會話接口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中使用JPA 2進行數據訪問255 
8.1 JPA 2.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使用SQL ResultSet映射進行本地查詢274 
8.7 Spring Data JPA介紹278 
8.7.1添加Spring Data JPA庫依賴項279 
8.7.2使用Spring Data JPA Repository抽象
進行數據庫操作279 
8.8使用JpaRepository 283 
8.9帶有自定義查詢的Spring Data JPA 284 
8.10通過使用Hibernate Envers保存
實體版本293 
8.10.1為實體版本控制添加表293 
8.10.2為實體版本控製配置
EntityManagerFactory 294
8.10.3啟用實體版本控制和歷史檢索296 
8.10.4測試實體版本控制297 
8.11 Spring Boot JPA 298 
8.12使用JPA時的注意事項302 
8.13小結302 


第9章事務管理303 
9.1研究Spring事務抽象層303 
9.2 PlatformTransactionManager的實現304 
9.3分析事務屬性305 
9.3.1 TransactionDefinition接口305 
9.3.2 TransactionStatus接口306 
9.4示例代碼的示例數據模型和基礎結構307 
9.4.1創建一個帶有依賴項的簡單Spring JPA項目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. 3 Spring Boot JTA 325 
9.6.4使用JTA事務管理器的注意事項328 
9.7小結329 


第10章使用類型轉換和格式化進行驗證330 
10.1依賴項330
10.2 Spring類型轉換系統331 
10.3使用PropertyEditors從字符串進行轉換331 
10.4 Spring類型轉換介紹333 
10.4.1實現自定義轉換器333 
10.4.2配置ConversionService 334 
10.4.3任意類型之間的轉換335 
10.5 Spring中的字段格式化338 
10.5.1實現自定義格式化器338 
10.5.2配置ConversionServiceFactoryBean 339 
10.6 Spring中的驗證340 
10.6.1使用Spring Validator接口340 
10.6.2使用JSR-349 Bean Validation 342 
10.6.3在Spring中配置Bean Validation支持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.2 Spring中的任務調度349 
11.2.1 Spring TaskScheduler抽象介紹349 
11.2.2研究示例任務350
11.2.3使用註解進行任務調度355 
11.2.4 Spring中異步任務的執行357 
11.3 Spring中任務的執行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.5 Spring Boot Artemis啟動器373 
12.6在Spring中使用RESTful-WS 375 
12.6.1 RESTful Web服務介紹375 
12.6.2為示例添加必需的依賴項376 
12.6. 3設計Singer RESTful Web服務376 
12.6.4使用Spring MVC展示REST樣式的Web服務376 
12.7配置Castor XML 377 
12.7.1實現SingerController 378
12.7.2配置Spring Web應用程序380 
12.7.3使用curl測試RESTful-WS 382 
12.7.4使用RestTemplate訪問RESTful-WS 383 
12.7.5使用Spring Security來保護
RESTful-WS 386 
12.8使用Spring Boot開發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單元測試Spring MVC控制器401 
13.4實現集成測試403 
13.4.1添加所需的依賴項403 
13.4.2配置用於服務層測試的配置文件403 
13.4.3 Java配置版本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.2 Groovy介紹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.1 Spring中的JMX支持425 
15.2將Spring bean導出為JMX 425 
15.3使用Java VisualVM進行JMX監控426 
15.4監視Hibernate統計信息428 
15.5使用了Spring Boot的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.3 MVC和Spring MVC介紹437 
16.3.1 MVC介紹438
16.3.2 Spring MVC介紹438 
16.3.3 Spring MVC WebApplicationContext層次結構439 
16.3.4 Spring MVC請求生命週期439 
16.3.5 Spring MVC配置440 
16.3.6在Spring MVC中創建第一個視圖442 
16.3.7配置DispatcherServlet 443 
16.3.8實現SingerController 444 
16.3.9實現歌手列表視圖445 
16.3.10測試歌手列表視圖445 
16.4理解Spring MVC項目結構445 
16.5實現國際化(il8n) 446 
16.5.1在DispatcherServlet配置中配置國際化446 
16.5 .2為國際化支持而修改歌手列表視圖448 
16.6使用主題和模板448 
16.7使用Apache Tiles查看模板450 
16.7.1設計模板佈局450 
16.7.2實現頁面佈局組件451 
16.8在Spring MVC中配置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和jQuery UI 462 
16.10.1 jQuery和jQuery UI介紹462 
16.10.2在視圖中使用jQuery和jQuery UI 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用Spring Security保護Web應用程序471 
16.12.1配置Spring安全性471 
16.12.2將登錄功能添加到應用程序中473 
16.12.3使用註解來保護控制器方法475 
16.13使用Spring Boot創建Spring Web 
應用程序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.1 WebSocket介紹487 
17.2與Spring一起使用WebSocket 487 
17.3使用WebSocket API 488 
17.4使用STOMP發送消息496 
17.5小結500 


第18章Spring項目:批處理、集成和XD等501 
18.1 Spring Batch 502 
18.2 JSR-352 507 
18.3 Spring Boot Batch 509 
18.4 Spring Integration 512 
18.5 Spring XD 516 
18.6 Spring框架的五個最顯著的功能517 
18.6.1功能性Web框架518 
18.6.2 Java 9互操作性526 
18.6.3 JDK模塊化526 
18.6.4使用Java 9和Spring WebFlux進行反應式編程528 
18.6.5 Spring支持JUnit 5 Jupiter 529 
18.7小結536 
附錄A設置開發環境537