深入淺出 Spring Boot 2.x

深入淺出 Spring Boot 2.x

作者: 楊開振
出版社: 人民郵電
出版在: 2018-08-01
ISBN-13: 9787115486387
ISBN-10: 7115486387
裝訂格式: 平裝
總頁數: 428 頁





內容描述


Spring框架是Java EE開發的強有力的工具和事實標準,而Spring Boot採用“約定優於配置”的原則簡化了Spring的開發,從而成為業界流行的微服務開發框架,已經被越來越多的企業採用。2018年3月Spring Boot的版本正式從1.x升級到了2.x,為了適應新潮流,本書將對Spring Boot 2.x技術進行深入講解。
本書從一個最簡單的工程開始講解Spring Boot企業級開發,其內容包含全註解下的Spring IoC和AOP、數據庫編程(JDBC、JPA和MyBatis)、數據庫事務、NoSQL(Redis和MongoDB)技術、Spring MVC、Spring 5新一代響應式框架WebFlux、因特網搶購業務、部署與監控、REST風格和Spring Cloud分佈式開發等。
本書內容緊扣因特網企業的實際要求,從全註解下Spring知識講到Spring Boot的企業級開發,對於Java開發人員,尤其是初學Spring Boot的人員和需要從傳統Spring轉向Spring Boot開發的技術人員,具有很高的參考價值。


目錄大綱


第1章Spring Boot來臨1 
1.1 Spring的歷史1 
1.2註解還是XML 2 
1.3 Spring Boot的優點3 
1.4傳統Spring MVC和Spring Boot的對比4 
第2章聊聊開發環境搭建和基本開發10 
2.1搭建Spring Boot開發環境10 
2.1.1搭建Eclipse開發環境10 
2.1.2搭建IntelliJ IDEA開發環境13 
2.2 Spring Boot的依賴和自動配置15 
2.3使用自定義配置19 
2.4開發自己的Spring Boot項目21 
第3章全註解下的Spring IoC 23 
3.1 IoC容器簡介23 
3.2裝配你的Bean 27 
3.2.1通過掃描裝配你的Bean 27 
3.2.2自定義第三方Bean 31 
3.3依賴注入32 
3.3.1註解@Autowired 34 
3.3.2消除歧義性——@Primary和@Quelifier 35 
3.3.3帶有參數的構造方法類的裝配36 
3.4生命週期37 
3.5使用屬性文件42 
3.6條件裝配Bean 45
3.7 Bean的作用域46 
3.8使用@Profile 48 
3.9引入XML配置Bean 50 
3.10使用Spring EL 51 
第4章開始約定編程——Spring AOP 53 
4.1約定編程53 
4.1.1約定53 
4.1.2 ProxyBean的實現57 
4.1 .3總結60 
4.2 AOP的概念61 
4.2.1為什麼使用AOP 61 
4.2.2 AOP術語和流程64 
4.3 AOP開發詳解65 
4.3.1確定連接點65 
4.3.2開發切面66 
4.3.3切點定義67 
4.3 .4測試AOP 68 
4.3.5環繞通知71 
4.3.6引入72 
4.3.7通知獲取參數74 
4.3.8織入75 
4.4多個切面77 
第5章訪問數據庫82 
5.1配置數據源83 
5.1.1啟動默認數據源83 
5.1.2配置自定義數據源83 
5.2使用JdbcTemplate操作數據庫86 
5.3使用JPA(Hibernate)操作數據90 
5.3.1概述90 
5.3.2開發JPA 90
5.4整合MyBatis框架96 
5.4.1 MyBatis簡介96 
5.4.2 MyBatis的配置97 
5.4.3 Spring Boot整合MyBatis 101 
5.4.4 MyBatis的其他配置104 
第6章聊聊數據庫事務處理107 
6.1 JDBC的數據庫事務108 
6.2 Spring聲明式事務的使用110 
6.2.1 Spring聲明式數據庫事務約定110 
6.2.2 @Transactional的配置項111 
6.2.3 Spring事務管理器113 
6.2.4測試數據庫事務114 
6.3隔離級別118 
6.3.1數據庫事務的知識118 
6.3.2詳解隔離級別120 
6.4傳播行為124 
6.4.1傳播行為的定義125 
6.4.2測試傳播行為126 
6.5 @Transactional自調用失效問題130 
第7章使用性能利器——Redis 134 
7.1 spring- data-redis項目簡介135 
7.1.1 spring-data-redis項目的設計135 
7.1.2 RedisTemplate 137 
7.1.3 Spring對Redis數據類型操作的封裝139
7.1.4 SessionCallback和RedisCallback接口141 
7.2在Spring Boot中配置和使用Redis 142 
7.2.1在Spring Boot中配置Redis 142 
7.2.2操作Redis數據類型143 
7.3 Redis的一些特殊用法148 
7.3.1使用Redis事務148 
7.3.2使用Redis流水線149 
7.3.3使用Redis發布訂閱150 
7.3.4使用Lua腳本153 
7.4使用Spring緩存註解操作Redis 156 
7.4.1緩存管理器和緩存的啟用156 
7.4.2開發緩存註解157 
7.4. 3測試緩存註解163 
7.4.4緩存註解自調用失效問題165 
7.4.5緩存臟數據說明165 
7.4.6自定義緩存管理器166 
第8章文檔數據庫——MongoDB 168 
8.1配置MongoDB 169 
8.2使用MongoTemplate實例170 
8.2.1搭建開發環境170 
8.2.2使用MongoTemplate操作文檔173 
8.3使用JPA 178 
8.3.1基本用法178 
8.3.2使用自定義查詢180 
第9章初識Spring MVC 183
9.1 Spring MVC框架的設計183 
9.2 Spring MVC流程184 
9.3定制Spring MVC的初始化191 
9.4 Spring MVC實例192 
9.4.1開發控制器193 
9.4.2視圖和視圖渲染194 
第10章深入Spring MVC開發197 
10.1處理器映射197 
10.2獲取控制器參數198 
10.2.1在無註解下獲取參數199 
10.2.2使用@RequestParam獲取參數199 
10.2.3傳遞數組200 
10.2.4傳遞JSON 200 
10.2.5通過URL傳遞參數203 
10.2.6獲取格式化參數204 
10.3自定義參數轉換規則205 
10.3.1處理器獲取參數邏輯205 
10.3.2一對一轉換器(Converter) 208 
10.3.3 GenericConverter集合和數組轉換210 
10.4數據驗證211 
10.4.1 JSR -303驗證211 
10.4.2參數驗證機制214 
10.5數據模型217 
10.6視圖和視圖解析器219 
10.6.1視圖設計219 
10.6.2視圖實例——導出PDF文件220
10.7文件上傳224 
10.7.1 Spring MVC對文件上傳的支持224 
10.7.2開發文件上傳功能226 
10.8攔截器228 
10.8.1攔截器的設計228 
10.8.2開發攔截器229 
10.8.3多個攔截器的順序231 
10.9國際化234 
10.9.1國際化消息源234 
10.9.2國際化解析器235 
10.9.3國際化實例——SessionLocaleResolver 237 
10.10 Spring MVC拾遺240 
10.10.1 @ResponseBody轉換為JSON的秘密240 
10.10. 2重定向241 
10.10.3操作會話對象243 
10.10.4給控制器增加通知245 
10.10.5獲取請求頭參數247 
第11章構建REST風格網站249 
11.1 REST簡述249 
11.1.1 REST名詞解釋249 
11.1. 2 HTTP的動作250 
11.1.3 REST風格的一些誤區251 
11.2使用Spring MVC開發REST風格端點251 
11.2.1 Spring MVC整合REST 252 
11.2.2使用Spring開發REST風格的端點252
11.2.3使用@RestController 260 
11.2.4渲染結果261 
11.2.5處理HTTP狀態碼、異常和響應頭262 
11.3客戶端請求RestTemplate 266 
11.3.1使用RestTemplate請求後端267 
11.3.2獲取響應頭、狀態碼和資源交換269 
第12章安全——Spring Security 271 
12.1概述和簡單安全認證271 
12.2使用WebSecurityConfigurerAdapter自定義273 
12.3自定義用戶服務信息274 
12.3.1使用內存簽名服務275 
12.3.2使用數據庫定義用戶認證服務276 
12.3.3使用自定義用戶認證服務279 
12.4限制請求281 
12.4.1配置請求路徑訪問權限282 
12.4.2使用Spring表達式配置訪問權限283 
12.4.3強制使用HTTPS 285 
12.4.4防止跨站點請求偽造285 
12.5用戶認證功能287 
12.5.1自定義登錄頁面287 
12.5.2啟用HTTP Basic認證288 
12.5.3登出289 
第13章學點Spring其他的技術291 
13.1異步線程池291
13.1.1定義線程池和開啟異步可用292 
13.1.2異步實例292 
13.2異步消息294 
13.2.1 JMS實例——ActiveMQ 295 
13.2.2使用AMQP——RabbitMQ 299 
13.3定時任務303 
13.4 WebSocket應用306 
13.4.1開發簡易的WebSocket服務306 
13.4.2使用STOMP 311 
第14章Spring 5新框架——WebFlux 319 
14.1基礎概念319 
14.1.1響應式編程的宣言320 
14.1.2 Reactor模型320 
14.1.3 Spring WebFlux的概述322 
14.1.4 WebHandler接口和運行流程323 
14.2通過Spring MVC方式開發WebFlux服務端325 
14.2.1開發持久層325 
14.2.2開發服務層327 
14.2.3開發控制層328 
14.2.4配置服務330 
14.2.5客戶端開發——WebClient 331 
14.3深入WebFlux服務端開發335 
14.3.1類型轉換器——Converter 335 
14.3.2驗證器——Validator 337
14.3.3訪問靜態資源338 
14.4深入客戶端開發339 
14.4.1處理服務端錯誤和轉換339 
14.4.2設置請求頭341 
14.5使用路由函數方式開發WebFlux 342 
14.5.1開發處理器342 
14.5.2開發請求路由346 
14.5.3使用過濾器347 
第15章實踐一下——搶購商品349 
15.1設計與開發349 
15.1.1數據庫表設計349 
15.1.2使用MyBatis開發持久層350 
15.1.3使用Spring開發業務層和控制層353 
15.1.4測試和配置355 
15.2高並發開發357 
15.2.1超發現象357 
15.2.2悲觀鎖358 
15.2.3樂觀鎖359 
15.2.4使用Redis處理高並發365 
第16章部署、測試和監控371 
16.1部署和運行371 
16.1.1打包371 
16.1.2運行項目373 
16.1.3熱部署375 
16.2測試376 
16.2.1構建測試類376 
16.2.2使用隨機端口和REST風格測試377 
16.2.3 Mock測試378
16.3 Actuator監控端點379 
16.4 HTTP監控381 
16.4.1查看敏感信息382 
16.4.2 shutdown端點383 
16.4.3配置端點385 
16.4.4自定義端點387 
16.4.5健康指標項389 
16.5 JMX監控392 
第17章分佈式開發——Spring Cloud 393 
17.1服務治理和服務發現——Eureka 395 
17.1.1配置服務治理節點395 
17.1.2服務發現397 
17.1.3配置多個服務治理中心節點401 
17.2微服務之間的調用403 
17.2.1 Ribbon客戶端負載均衡403 
17.2.2 Feign聲明式調用406 
17.3斷路器——Hystrix 409 
17.3.1使用降級服務410 
17.3.2啟用Hystrix儀錶盤412 
17.4路由網關——Zuul 415 
17.4.1構建Zuul網關415 
17.4.2使用過濾器418 
17.5使用@SpringCloudApplication 421 
附錄Spring Boot知識點補充423


作者介紹


楊開振,精通Java 互聯網技術開發和實踐,擁有十餘年一線企業開發經驗,著有業內暢銷書《深入淺出MyBatis 技術原理與實戰》和《Java EE 互聯網輕量級框架整合開發——SSM 框架(Spring MVC +Spring+MyBatis) 和Redis 實現》,目前成為自由職業人,在淘寶教育平台上從事Java EE 互聯網相關的在線培訓工作。




相關書籍

Visual Studio Code: End-to-End Editing and Debugging Tools for Web Developers

作者 Bruce Johnson

2018-08-01

Kotlin 移動應用開發 (Kotlin for Android App Development)

作者 Peter Sommerhoff 陳洋 王亞鑫 康顥曦

2018-08-01

Windows Server 2019 Inside Out

作者 Thomas Orin

2018-08-01