産品特色
編輯推薦
國內市場上為數不多的講解Spring Boot的中文書。
本書從Spring 基礎、Spring MVC 基礎講起,適閤初學者。
本書涵蓋瞭使用Spring Boot 進行Java EE 開發的絕大數應用場景,如Web 開發、數據訪問、安全控製、批處理、異步消息、係統集成、開發與部署、應用監控、分布式係統開發等。
全棧解決Java EE 開發中所遇到的絕大多數問題。
本書特點1本書每個章節的基本架構都是:點睛+實戰。
點睛:用簡練的語言去描述當前的技術;
實戰:對當前技術進行實戰意義的代碼演示。
本書特點2技術相關,業務不相關。
在本書的實戰例子中不會假設一個業務需求,然後讓讀者既要理解技術,又要理解假設的業務,本書的目標是讓讀者“學習時隻關注技術,開發時隻關注業務”。
內容簡介
在當今Java EE 開發中,Spring 框架是當之無愧的王者。而Spring Boot 是Spring 主推的基於“習慣優於配置”的原則,讓你能夠快速搭建應用的框架,從而使得Java EE 開發變得異常簡單。
本書從Spring 基礎、Spring MVC 基礎講起,從而無難度地引入Spring Boot 的學習。涵蓋使用Spring Boot 進行Java EE 開發的絕大數應用場景,包含:Web 開發、數據訪問、安全控製、批處理、異步消息、係統集成、開發與部署、應用監控、分布式係統開發等。
當你學完本書後,你將能使用Spring Boot 解決Java EE 開發中所遇到的絕大多數問題。
作者簡介
汪雲飛,開源技術專傢,現任職微璟技術CTO,擁有10年以上的JavaEE開發經驗。對開源Java框架(Spring、Hibernate/JPA、Spring Boot)、開源GIS(GeoServer、OpenLayers),開源雲計算解決方案(IaaS:ClouStack、OpenStack;PaaS:Apache Mesos、Deis、Docker)頗有研究。其撰寫的技術博客被大量的閱讀和轉載。
目錄
第一部分 點睛Spring 4.x
第1 章 Spring 基礎 ..........................................2
1.1 Spring 概述 ............................................. 2
1.2 Spring 項目快速搭建 .................................. 5
1.3 Spring 基礎配置 .....................................17
第2 章 Spring 常用配置 .... ............................ 30
2.1 Bean 的Scope .... ................................... 30
2.2 Spring EL 和資源調用 .... ...................... 33
2.3 Bean 的初始化和銷毀 .... ...................... 37
2.4 Profile .... .... .......... 40
2.5 事件(Application Event) .... .............. 44
第3 章 Spring 高級話題 .... ............................ 48
3.1 Spring Aware .... ..................................... 48
3.2 多綫程 .... .... ......... 51
3.3 計劃任務 .... .... ..... 54
3.4 條件注解@Conditional .... .................... 56
3.5 組閤注解與元注解 .... ........................... 60
3.6 @Enable*注解的工作原理 .... .............. 63
VIII ∣ Java EE 開發的顛覆者:Spring Boot 實戰
3.7 測試 .... .... ............. 66
第二部分 點睛Spring MVC 4.x
第4 章 Spring MVC 基礎 .... .......................... 72
第三部分 實戰Spring Boot
第5 章 Spring Boot 基礎 .... ......................... 122
第6 章 Spring Boot 核心 .... ......................... 138
X ∣ Java EE 開發的顛覆者:Spring Boot 實戰
第7 章 Spring Boot 的Web 開發 .... ............ 170
7.1 Spring Boot 的Web 開發支持 .... ....... 170
7.2 Thymeleaf 模闆引擎 .... ....................... 171
7.2.4 實戰 .... ...................................... 177
7.3 Web 相關配置 .... ................................. 182
7.4 Tomcat 配置 .... .................................... 187
7.5 Favicon 配置 .... ................................... 196
7.6 WebSocket .... ....................................... 197
7.7 基於Bootstrap 和AngularJS 的現代Web 應用 .................. 212
第8 章 Spring Boot 的數據訪問 .... .............. 233
8.1 引入Docker .... .................................... 237
8.2 Spring Data JPA .... .............................. 248
8.3 Spring Data REST .... ........................... 284
8.4 聲名式事務 .... ..................................... 297
8.5 數據緩存Cache .... .............................. 309
8.6 非關係型數據庫NoSQL .... ................ 320
8.6.1 MongoDB .... ............................. 320
8.6.2 Redis .... ..................................... 329
第9 章 Spring Boot 企業級開發 .... .............. 340
9.1 安全控製Spring Security .... ............... 340
9.2 批處理Spring Batch .... ....................... 362
9.3 異步消息 .... ......................................... 385
9.4 係統集成Spring Integration .... ........... 395
第10 章 Spring Boot 開發部署與測試 .... ..... 407
第11 章 應用監控 .... ................................... 431
第12 章 分布式係統開發 .... ........................ 456
12.1 微服務、原生雲應用 .... ................... 456
12.2 Spring Cloud 快速入門 .... ................. 457
12.3 實戰 .... .... ......... 458
12.4 基於Docker 部署 ...................................478
附錄A
前言/序言
Spring Boot 2.x 核心技術精要與企業級應用實戰 內容簡介 本書是針對當下企業級Java開發領域最流行、最核心的框架Spring Boot的深度實踐指南。不同於市麵上泛泛介紹Spring Boot基礎語法的書籍,本書將以高度的實戰導嚮,聚焦Spring Boot 2.x版本中的關鍵技術點,並結閤企業級應用開發中的常見場景和挑戰,提供一套係統、全麵、深入的學習路徑。全書旨在幫助開發者在理解Spring Boot核心原理的基礎上,能夠高效、穩定地構建齣滿足業務需求的現代Java應用程序,從而成為一名真正具備“開箱即用”和“快速迭代”能力的Spring Boot開發者。 核心理念與目標讀者 本書秉持“知其然,更知其所以然”的理念,不僅僅教授如何使用Spring Boot提供的各種自動化配置和便捷功能,更深入地剖析其背後的設計思想、工作原理和最佳實踐。我們相信,隻有深刻理解瞭框架的內在機製,纔能在遇到復雜問題時遊刃有餘,纔能根據實際需求進行靈活的定製和優化。 本書的目標讀者涵蓋瞭以下群體: 初入Spring Boot領域的開發者: 具備一定的Java基礎,希望快速掌握Spring Boot並應用於實際項目中。 有Spring Boot基礎但尋求深入的開發者: 已經使用過Spring Boot,但希望對框架有更深層次的理解,掌握更多高級特性和調優技巧。 傳統Java EE開發者: 熟悉Servlet/JSP、EJB等傳統Java EE技術,希望瞭解並遷移到更現代化、更高效的Spring Boot開發模式。 架構師與技術領導者: 希望全麵瞭解Spring Boot生態,為團隊技術選型、項目架構設計提供參考。 本書內容綱要(詳細拆解) 本書共分為十章,循序漸進地帶領讀者掌握Spring Boot的方方麵麵: 第一章:Spring Boot 2.x 快速入門與核心概念解析 1.1 Spring Boot 2.x 帶來的變革與優勢: 深入分析Spring Boot 2.x相較於前代版本在自動化配置、依賴管理、性能優化等方麵的顯著提升,闡述其在微服務時代的核心地位。 1.2 環境搭建與第一個Spring Boot應用: 詳細指導讀者完成開發環境的準備,從零開始構建一個“Hello, World!”級彆的Spring Boot應用,理解其基本的項目結構和啓動流程。 1.3 Maven/Gradle 依賴管理與starter機製: 深入講解Spring Boot如何利用Maven或Gradle進行高效的依賴管理,重點剖析`starter`的原理,理解其如何簡化第三方庫的集成。 1.4 @SpringBootApplication 注解深度解析: 詳細解讀`@SpringBootApplication`注解的內部機製,包括`@Configuration`、`@EnableAutoConfiguration`、`@ComponentScan`的作用,理解其如何實現自動化配置和組件掃描。 1.5 Spring Boot 配置文件詳解 (`application.properties` / `application.yml`): 全麵介紹Spring Boot的屬性配置方式,包括`properties`和`yaml`兩種格式的優劣勢,以及如何進行多環境配置、外部化配置和屬性優先級管理。 1.6 Spring Boot 啓動器與自動配置原理: 揭示Spring Boot自動配置的核心思想,講解`META-INF/spring.factories`文件的作用,以及如何自定義自動配置類,讓讀者知曉其“魔法”背後的邏輯。 第二章:Spring Boot 核心組件深度探索 2.1 Spring IoC 容器與 Bean 生命周期管理: 迴顧Spring IoC容器的核心概念,並結閤Spring Boot的自動化配置,講解Bean的創建、初始化、使用和銷毀過程。 2.2 Bean 的裝配與依賴注入(DI): 重點講解Spring Boot中Bean的裝配方式,包括基於注解(`@Component`、`@Service`、`@Repository`、`@Controller`)、基於Java配置和基於XML配置,並深入演示依賴注入的各種場景。 2.3 Spring Boot 的 Profile 管理與多環境開發: 詳細演示如何利用Spring Boot的Profile功能,為不同的部署環境(開發、測試、生産)配置不同的屬性和Bean,實現 seamless 的環境切換。 2.4 Spring Boot 的事件與監聽器機製: 講解Spring Boot如何利用ApplicationEvent和ApplicationListener實現組件間的解耦通信,並演示實際應用場景。 2.5 Spring Boot 性能監控與 Actuator 詳解: 深入介紹Spring Boot Actuator模塊,講解如何利用其提供的端點(Endpoints)進行健康檢查、指標監控、日誌管理、環境信息查看等,為生産環境的運維提供有力支持。 第三章:Web 應用開發:Spring Boot MVC 框架精通 3.1 Spring Boot Web 自動配置原理: 揭示Spring Boot如何自動配置Tomcat/Jetty/Undertow等內嵌Web服務器,以及DispatcherServlet等核心組件。 3.2 RESTful API 設計與實現: 講解RESTful風格API的設計原則,並使用Spring MVC(`@RestController`, `@RequestMapping`, `@GetMapping`, `@PostMapping`等)實現高效、規範的RESTful服務。 3.3 請求參數處理與響應封裝: 詳細介紹Spring Boot中處理各種請求參數(路徑變量、請求參數、請求體、文件上傳)的方法,以及如何統一封裝API響應體。 3.4 視圖解析與模闆引擎集成(Thymeleaf, FreeMarker): 講解Spring Boot如何集成主流的視圖模闆引擎,如Thymeleaf、FreeMarker,並演示如何在服務端渲染HTML頁麵。 3.5 REST 客戶端集成(RestTemplate, WebClient): 演示如何使用Spring Boot提供的`RestTemplate`和響應式編程的`WebClient`調用其他HTTP服務,實現服務間的集成。 3.6 跨域請求(CORS)處理: 講解Web開發中常見的跨域問題,並提供Spring Boot中的解決方案。 第四章:數據持久化:Spring Boot 與數據庫的深度集成 4.1 Spring Boot 數據源配置與連接池(HikariCP, Druid): 講解Spring Boot如何方便地配置數據庫連接池,並詳細介紹HikariCP等高性能連接池的配置與優化。 4.2 MyBatis-Plus 快速入門與高級特性: 重點講解MyBatis-Plus框架,包括其CRUD操作的便捷性、代碼生成器、動態SQL、分頁插件等,實現高效的數據庫操作。 4.3 Spring Data JPA 聲明式開發: 介紹Spring Data JPA,演示如何通過接口定義實現Repository層,減少大量SQL編寫,並講解JPA的實體映射、關係配置等。 4.4 事務管理(Declarative Transactions): 深入講解Spring Boot中的事務管理,包括聲明式事務(`@Transactional`)的使用、事務傳播行為、隔離級彆和迴滾策略。 4.5 數據庫遷移(Flyway, Liquibase): 介紹並演示如何使用Flyway或Liquibase進行數據庫版本管理和遷移,保證開發、測試、生産環境數據庫的一緻性。 4.6 讀寫分離與多數據源配置: 講解如何在Spring Boot項目中配置讀寫分離,實現多數據源的動態切換,滿足復雜業務場景的需求。 第五章:Spring Boot 生態集成:消息隊列、緩存與分布式服務 5.1 消息隊列集成(Kafka, RabbitMQ, ActiveMQ): 詳細講解Spring Boot如何與主流消息隊列(如Kafka、RabbitMQ)進行集成,實現生産者、消費者模式,以及消息的可靠投遞與消費。 5.2 分布式緩存集成(Redis): 講解Spring Boot如何集成Redis,並提供`RedisTemplate`的使用,實現Session共享、緩存加速等功能。 5.3 Spring Cloud Alibaba 微服務框架入門: 簡要介紹Spring Cloud Alibaba生態,為後續微服務章節打下基礎,理解其在構建分布式係統中的作用。 5.4 服務注冊與發現(Nacos): 講解如何使用Nacos作為服務注冊中心,實現服務的高可用和動態發現。 5.5 服務調用(OpenFeign): 演示如何使用OpenFeign進行聲明式的服務間調用,簡化RPC通信的實現。 5.6 配置中心(Nacos Config): 介紹Nacos Config如何實現配置的動態管理和熱更新,以及Spring Boot與配置中心的集成。 第六章:Spring Security:認證與授權的安全加固 6.1 Spring Security 核心概念與工作流程: 深入剖析Spring Security的認證(Authentication)和授權(Authorization)機製,理解其Filter Chain的執行流程。 6.2 基於錶單的認證實現: 演示如何配置Spring Security實現用戶登錄、登齣、密碼校驗等基於錶單的認證功能。 6.3 基於 JWT 的 Token 認證: 講解JWT(JSON Web Token)的工作原理,並演示如何在Spring Boot中實現基於JWT的無狀態認證。 6.4 細粒度權限控製(RBAC): 講解基於角色的訪問控製(RBAC)模型,並演示如何在Spring Security中實現方法的訪問權限控製。 6.5 OAuth 2.0 與 OpenID Connect 集成: 介紹OAuth 2.0授權框架,並演示如何與Spring Boot集成,實現第三方登錄等功能。 6.6 CSRF 防護與 CORS 安全配置: 講解CSRF(跨站請求僞造)攻擊原理,以及Spring Security提供的防護機製,並結閤CORS進行安全配置。 第七章:Spring Boot 異步處理與並發編程 7.1 `@Async` 注解與異步任務執行: 講解如何使用`@Async`注解將方法定義為異步方法,並配置綫程池以提升係統吞吐量。 7.2 CompletableFuture 與響應式編程基礎: 介紹Java並發編程中的`CompletableFuture`,並為後續響應式編程打下基礎。 7.3 Spring WebFlux:響應式 Web 應用開發: 深入講解Spring WebFlux,理解其非阻塞、事件驅動模型,以及如何使用Reactor編寫高性能的響應式Web應用。 7.4 響應式數據訪問: 演示如何結閤響應式編程,與數據庫進行異步、非阻塞的交互。 第八章:Spring Boot 性能調優與監控 8.1 JVM 性能調優基礎: 迴顧JVM內存模型、垃圾迴收機製,講解常用的JVM調優參數。 8.2 Spring Boot 應用啓動速度優化: 分析Spring Boot應用啓動慢的原因,並提供一係列優化策略,如按需加載、精簡依賴等。 8.3 數據庫訪問性能優化: 針對數據庫連接池、SQL語句、索引等方麵,提供Spring Boot應用的性能調優建議。 8.4 Web 應用性能優化: 介紹HTTP協議優化、緩存策略、CDN使用等Web應用性能提升方法。 8.5 分布式係統下的性能考量: 討論在微服務架構下,如何進行性能監控和瓶頸定位。 8.6 性能監控工具與實踐: 結閤Actuator、Prometheus、Grafana等工具,演示如何構建完整的應用性能監控體係。 第九章:Spring Boot 部署與運維 9.1 Spring Boot 應用打包與部署: 詳細講解如何將Spring Boot應用打包成可執行JAR包或WAR包,並介紹不同部署方式的優缺點。 9.2 Docker 容器化部署: 演示如何編寫Dockerfile,將Spring Boot應用打包成Docker鏡像,並進行容器化部署。 9.3 Kubernetes (K8s) 編排部署: 介紹Kubernetes的基本概念,並演示如何為Spring Boot應用編寫K8s部署文件(Deployment, Service等),實現彈性伸縮和高可用。 9.4 日誌管理與分析(ELK Stack): 講解如何配置Spring Boot應用輸齣日誌,並結閤ELK Stack(Elasticsearch, Logstash, Kibana)實現日誌的集中存儲、搜索和分析。 9.5 CI/CD 流程集成: 探討如何將Spring Boot應用的構建、測試、部署集成到CI/CD流水綫中,實現自動化部署。 第十章:企業級實戰案例分析與進階 10.1 構建一個完整的電商後端服務: 通過一個實際的電商後端案例,串聯前幾章所學的知識點,包括用戶管理、商品管理、訂單處理等。 10.2 API 網關設計與實現(Spring Cloud Gateway): 講解API網關的作用,並演示如何使用Spring Cloud Gateway實現統一的API入口、請求路由、限流熔斷等。 10.3 分布式事務解決方案: 探討在微服務架構下,如何處理分布式事務,並介紹TCC、Saga等模式。 10.4 最佳實踐與常見陷阱規避: 總結Spring Boot開發的常見問題和誤區,提供避免踩坑的經驗。 10.5 Spring Boot 未來發展趨勢展望: 展望Spring Boot以及Spring生態未來的發展方嚮,如對雲原生、函數計算等新興技術棧的支持。 本書特色 實戰為王: 每一章都配有大量的代碼示例和實際應用場景,確保讀者學完即可上手。 深度剖析: 不止於“如何做”,更側重“為何如此”,深入講解Spring Boot的內部原理,幫助讀者理解框架設計思想。 版本聚焦: 嚴格圍繞Spring Boot 2.x 版本進行講解,確保內容的時效性和準確性。 生態全麵: 覆蓋Spring Boot在Web開發、數據持久化、微服務、安全、異步處理、部署運維等各個環節的核心技術。 案例驅動: 最後通過一個完整的企業級案例,將所有知識點融會貫通,提升讀者的實戰能力。 通過閱讀本書,您將能夠深刻理解Spring Boot的核心價值,熟練運用其各項功能,並具備獨立設計、開發和部署企業級Java應用的能力,成為一名真正意義上的Spring Boot開發者。