具體描述
編輯推薦
Spring MVC是一個麵嚮Web應用的輕量級框架。作為Spring框架的一部分,它天然擴展瞭Spring並為Web相關問題提供瞭一緻的解決方案。
通過設計Maven模塊,你將會實現一個企業級、無狀態的REST應用。本書的獨特之處在於從Spring生態圈中收集瞭大量的實用開發技術。你將會通過超媒體與HATEOAS來實現客戶與産品之間的無狀態會話,並掌握如何配置基於WebSocket的消息服務。最後,你將會學到如何創建並組織不同層次的自動化測試。
■ 使用Maven構建項目,並創建自測試、領域特定、可部署的Web歸檔。
■ 使用AngularJS與Bootstrap為響應式與強大的前端生成模闆。
■ 構建高性能、無狀態的RESTful與超媒體應用來支持多客戶體驗。
■ 使用BASIC認證模式與OAuth2通過REST進行認證。
■ 使用Swagger與Swagger UI來文檔化並發布REST API。
■ 實現Spring Web應用的可伸縮。
■ 通過WebSocket與STOMP消息進行通信。
內容簡介
《Spring MVC實戰》由淺入深地介紹瞭當今流行的Java Web框架Spring MVC的方方麵麵,從基礎的環境搭建到微服務設計與架構,再到持久化、REST API構建、認證與測試……涵蓋瞭Spring MVC諸多重要且常用的特性。值得一提的是,《Spring MVC實戰》針對Spring MVC的每一項特性都提供瞭完整可運行的示例代碼,可以幫助讀者更好地掌握這項技術。
無論是Spring MVC的初學者,還是擁有一定經驗的開發人員,都能夠從《Spring MVC實戰》中獲得啓發,更好地理解Spring MVC這一Web開發“利器”。
作者簡介
Alex Bretet,是一位知名的Java 與Spring 集成工程師,目前就職於Thunderhead,這是一傢全球知名的SaaS 提供商。他擁有能源、保險、財務與互聯網等多個領域的豐富開發經曆。受到互聯網通信能力與諸多初創公司的感染,他深信開發所能帶來的價值(誌趣相同的一幫人能在很短的時間內實現令人難以置信的目標)。他還是開源,特彆是Spring 的擁護者,其實用主義持續不斷地“瓦解”著現有的做法,並提供瞭頗具價值的替代方法。可以通過alex.bretet@gmail.com 與作者取得聯係,或者在Twitter 上關注@abretet。
目錄
1 企業級Spring應用的搭建.1
引言 1
安裝Eclipse JEE開發者版本與Java SE 82
為Eclipse配置Java 8、Maven 3和Tomcat 8 5
定義Maven的項目結構 12
安裝Spring、Spring MVC和Web結構24
2 使用Spring MVC設計微服務架構35
引言35
使用簡單URL映射配置控製器 36
使用ViewResolver配置迴退控製器 49
使用Bootstrap創建並自定義響應式單頁麵Web設計.53
使用JSTL在視圖中顯示模型 72
定義通用WebContentInterceptor82
使用AngularJS設計客戶端MVC模式88
3 Java持久化與實體100
引言 100
在Spring中配置Java持久化API 101
定義有用的EJB3實體和關係105
使用JPA與Spring Data JPA 115
4 為無狀態架構構建REST API122
引言 122
綁定請求與編排響應123
配置內容協商(JSON與XML等) 133
添加分頁、過濾器與排序功能 138
全局處理異常149
使用Swagger生成文檔與公開API 156
5 使用Spring MVC進行認證.163
引言 163
配置Apache HTTP服務器來代理Tomcat服務器 163
修改用戶和角色以適應Spring Security 172
基於BASIC的認證方式.183
第三方OAuth2認證193
在REST環境中保存認證信息 211
服務與控製器授權 220
6 實現HATEOAS.235
引言 235
將DTO改造成Spring HATEOAS資源 236
為超媒體驅動的API創建鏈接 244
JPA實體的暴露策略 252
通過OAuth從第三方API獲取數據259
7 開發CRUD操作與校驗266
引言 266
為所有HTTP方法擴展REST處理程序.267
使用Bean Validation校驗資源 278
REST消息與內容的國際化.292
使用HTML5和AngularJS校驗客戶端錶單 302
8 通過WebSocket與STOMP進行通信.308
引言 308
通過基於SockJS的STOMP使社交事件流媒體化309
使用RabbitMQ作為多協議消息代理 322
將任務放入RabbitMQ並通過AMQP消費任務 328
通過Spring Session和Redis保證消息安全334
9 測試與故障排除351
引言 351
通過Flyway實現數據庫遷移自動化352
使用Mockito和Maven Surefire進行單元測試 357
使用Cargo、Rest-assured和Maven Failsafe進行集成測試 364
在集成測試中注入Spring Bean 373
使用Log4j2記錄日誌的現代應用 377
前言/序言
歡迎閱讀這本獨一無二的《Spring MVC實戰》,希望你已經為本書的探索之旅做好瞭準備,本書會帶你暢遊現代 Spring Web開發實踐。本書作者已經創建瞭 cloudstreetmarket.com網站,這是一個帶有社交功能的股票交易平颱,本書將會帶領你探索網站開發過程的每一步。
1 企業級 Spring應用的搭建
本章介紹瞭業界的一套標準實踐,從配置 Eclipse IDE以對 Java 8、Tomcat 8、GIT與 Maven提供更優化的支持,到理解 Maven作為一個構建自動化工具以及作為一個依賴管理工具的認識,閱讀本章後你將會瞭解如何在一個堅實的基礎上部署 Spring框架。
無論一個項目旨在成為一個能夠獲得豐厚利潤的産品,抑或僅僅是一個練習,都是從相同的企業級模式開始的。
本章並不僅僅是開發 Cloud Street Market應用的第一個階段,還為麵嚮企業級 Spring應用的開發者提供瞭大量的標準化實踐。
2 使用 Spring MVC設計微服務架構
本章內容有些多,介紹瞭 Spring MVC的核心原則,比如請求流與 DispatcherServlet的中心角色,還介紹瞭如何通過與控製器相關的注解來配置 Spring MVC控製器與控製器方法處理器。
在微服務架構的搭建過程中,我們在各個模塊與 Web項目中安裝瞭 Spring與 Spring MVC,用於構建易於部署且可伸縮的功能性單元。從這個視角來看,我們通過一個 Web模塊來構建應用,該模塊負責提供一個 Twitter Bootstrap模闆,同時與另一個專門用作 REST Web Services的 Web模塊搭配使用。
本章將介紹如何通過 JSTL將模型從控製器傳遞給 JSP視圖,以及如何通過 AngularJS來設計 JavaScript MVC模式。
3 Java持久化與實體
本章介紹瞭持久化相關的內容。在這個階段,瞭解如何在 Spring生態圈以及 Spring MVC應用中處理持久化數據很有必要。該章將介紹如何在 Spring中通過 dataSource與 entityManagerFactory來配置 JPA持久化提供者( Hibernate)。你將學習如何從 EJB3實體來構建好處極多的 JPA對象關係映射,接下來會學習如何通過 Spring Data JPA來查詢倉庫。
4 為無狀態架構構建 REST API
本章揭示瞭如何將 Spring MVC作為 REST Web Services引擎。我們將會看到框架對此所提供的令人驚嘆的支持,隻需為抽象的與 Web相關的邏輯的方法處理器提供幾個注解即可,這樣我們就可以將主要精力放在業務上瞭。這個原則也用在瞭請求綁定(參數、 URL路徑與頭信息綁定等)與響應編排注解方麵,同時在 Spring Data的集成支持上也用到瞭。
本章還介紹瞭如何創建作為 Spring MVC一部分的異常處理器來將預定義的異常類型轉換為通用的錯誤響應。你將學到如何配置內容協商(這是 REST APIs的重要內容),最後還將學習如何通過 Swagger與 Swagger UI來公開並文檔化 REST端點信息。
5 使用 Spring MVC進行認證
本章介紹瞭如何在控製器與服務層對 HTTP BASIC與 OAuth2等標準協議配置認證。你將學習與 Spring Security相關的幾個概念與實踐,例如過濾器鏈、 命名空間、認證管理器,以及角色與用戶的管理等。我們的 OAuth2流是個客戶端實現。我們在用戶首次使用第三方提供者 Yahoo! 時在應用中對其進行認證。這些 Yahoo! 的認證與連接信息稍後會被用於從 Yahoo! Finance中拉取最新的財經數據。藉助於 Spring Social庫,我們可以在後颱對 OAuth2實現完全的抽象化。
6 實現 HATEOAS
本章介紹瞭如何將 RESTful Spring MVC API更進一步。超媒體驅動的應用為每個單獨的請求資源都提供瞭鏈接,這些鏈接反映瞭相關資源的 URL。它們嚮客戶端(無論是何種類型的客戶端)提供瞭實時的導航選擇—精確的文檔,同時也是實際的實現。該章將會介紹如何通過 JPA實體關聯或控製器層來構建這種鏈接。
7 開發 CRUD操作與校驗
本章介紹更加高級的 Spring MVC概念,通過認識支持交互式 HTTP方法( PUT、POST 與 DELETE)的工具與技術,我們將學習如何使用 HTTP1/1規範( RFC 7231語義與內容)來返迴恰當的響應狀態碼與頭信息。
本章通過 Spring Validator與 ValidationUtils輔助類的搭配使用來提供與驗證相關的 JSR-303和 JSR-349規範的兼容實現。該章的最後一節將會介紹消息與內容的國際化( I18N)。我們還通過 AngularJS提供瞭一個客戶端實現,使用瞭已發布的國際化 Web Services。
8 通過 WebSocket與 STOMP進行通信
本章將會聚焦於“冉冉升起”的 WebSocket技術,並為我們的應用構建麵嚮消息的中間件。該章提供瞭一個大傢很少會見到的示例,通過 Spring實現瞭關於 WebSockets的大部分內容,從默認的嵌入式 WebSocket消息代理的使用,到特性完備的外部代理(藉助於 STOMP與 AMQP協議)。我們將會瞭解如何嚮多個客戶端廣播消息,以及如何通過優秀的可伸縮特性推遲耗時任務的執行。
通過本章你還將學到如何動態創建私有隊列,以及如何獲取認證客戶端並通過這些私有隊列與其收發消息。
為瞭實現 WebSocket認證與消息認證,我們將 API置為有狀態的。對於有狀態來說,我們要知道的是 API將會使用 HTTP會話在多個請求間保持用戶的認證狀態。藉助於 Spring Session與高度集群化的 Redis服務器的支持,會話將可以在多個 Web應用間共享。
9 測試與故障排除
本章介紹瞭一套用於維護、調試與改進應用狀態的工具與一般做法。作為本書的最後一部分內容,我們將會學習如何通過 Flyway Maven Plugin將數據庫模式從一個應用版本升級為另一個,並將其作為 Maven構建的一部分。我們還會學習如何編寫自動化單元測試(藉助於 Maven Sure.re與 Mockito)與集成測試(使用一套庫,例如 Cargo、Rest-assured與 Maven Failsafe)。
該章的最後一節介紹瞭將 Log4j2作為全局日誌框架的做法,無論什麼環境,我們都可以通過這一日誌解決方案來高效排錯。
書中多個章節都列齣瞭係統需要具備的硬件與軟件條件。而且,學習本書經常需要訪問互聯網資源,有不少擴展內容都給齣瞭鏈接,或者需要下載必備軟件。此外更加重要的是,本書使用 Git版本係統來管理每章的代碼基,本地的 Git倉庫需要對應於項目的遠程倉庫(位於 GitHub上),要能夠訪問這個遠程倉庫。
本書的示例支持三種操作係統: MS Windows、Linux與 Mac OS X。對於硬件平颱,推薦使用主流、高性能的工作站,最低 2 GB內存, 500 MB以上空閑硬盤空間。
在編寫本書時,作者的一個目標就是一方麵盡量保持內容的可讀性,另一方麵則盡量多地嚮讀者介紹現代 Web開發的實踐。
我們相信,對 Spring MVC感興趣的大多數讀者的主要目的在於尋求一個入門套件和工具箱,來開發現代、基於 Spring的 Web應用。我們還相信,大多數讀者都傾嚮於通過實踐而非理論來強化對概念的理解。當下,我們都知道人們具有不同的學習習慣與方式。
鑒於此,本書的各個章節都是逐步推進的,從直觀的第 1章到更具挑戰性的第 8章。相比後麵的章節來說,前幾章更適閤大多數 Java開發者。
話雖如此,本書卻幾乎包含瞭你所要的一切!本書配套的示例應用已經處於運行狀態,等待著你的探索,理解其工作方式。
一般來說,我們假定你是一名具有 Web開發經驗的 Java開發者。此外,我們期望你對學習 Spring Web技術擁有濃厚的興趣。
《 Java Web 開發精髓:從零構建高性能應用 》 前言 在信息爆炸的時代,互聯網已成為人們獲取信息、進行交流、享受娛樂的核心平颱。而支撐這一切的,正是那些穩定、高效、用戶體驗卓越的 Web 應用。Java,作為一門久經考驗、生態成熟的編程語言,在 Web 開發領域扮演著舉足輕重的角色。本書旨在帶領讀者深入探索 Java Web 開發的方方麵麵,從基礎概念到高級技巧,從框架選型到性能優化,從安全防護到部署運維,構建一套完整的知識體係,幫助開發者們掌握構建高性能、可擴展、易維護的 Java Web 應用的核心能力。 我們都知道,Web 應用的開發並非一蹴而就,它涉及多個層麵:前端的用戶交互、後端的業務邏輯處理、數據的持久化存儲、服務器的部署與管理等等。其中,後端開發是 Web 應用的靈魂所在,它負責處理海量請求,執行復雜業務,確保數據的安全與一緻。Java 憑藉其跨平颱性、強大的庫支持、活躍的社區以及成熟的框架生態,成為瞭後端開發的首選語言之一。 本書的核心目標是幫助讀者理解 Java Web 開發的內在邏輯,而非僅僅停留在 API 的調用層麵。我們將從最底層的 Servlet API 入手,逐步深入到各種主流框架的設計思想和實現機製。通過大量的案例分析和代碼示例,讀者將能夠親身體驗如何將抽象的概念轉化為實際可用的功能,如何解決開發過程中遇到的各種挑戰。 我們深知,對於很多開發者而言,Web 開發的道路充滿瞭迷茫與睏惑。尤其是在麵對眾多的框架和技術選項時,選擇哪一條路徑纔能事半功倍,常常令人頭疼。本書正是為瞭解決這一痛點而生。我們將以一種循序漸進、由淺入深的方式,引導讀者逐步建立起對 Java Web 開發的全局觀,理解不同技術之間的聯係與區彆,從而能夠根據實際項目需求,做齣最明智的技術選型。 本書並非一本枯燥的技術手冊,而是一次深入的實踐探索之旅。我們將結閤真實世界的開發場景,討論在性能瓶頸、並發處理、數據一緻性、安全性等方麵可能遇到的問題,並提供切實可行的解決方案。無論是初學者希望係統學習 Java Web 開發,還是有一定經驗的開發者希望深化理解、提升技能,本書都將是您不可或缺的良伴。 第一部分:Java Web 開發基石 在深入探討高級框架和技術之前,理解 Java Web 開發的最底層原理至關重要。本部分將帶領讀者迴顧並深入理解 Java Web 開發的核心基石——Servlet API。 第一章:HTTP 協議與 Web 工作原理 HTTP 協議詳解: 深入剖析 HTTP 的請求與響應模型,理解請求方法(GET, POST, PUT, DELETE等)的含義及其應用場景,探討狀態碼的意義(2xx, 3xx, 4xx, 5xx)以及它們在 Web 應用中的作用。我們將詳細分析 HTTP 請求頭(Headers)與響應頭(Headers)中常見字段的含義,例如 `Content-Type`, `Cookie`, `Cache-Control`, `User-Agent` 等,理解它們如何影響瀏覽器與服務器之間的通信。 Web 服務器的工作流程: 瞭解 Web 服務器(如 Tomcat, Jetty)如何接收客戶端請求,如何解析請求,如何將請求分發給後端的 Java 應用,以及如何將響應返迴給客戶端。我們將探討 Web 服務器與 Servlet 容器之間的關係,以及它們在整個 Web 請求處理流程中的角色。 URL 與 URI 的區彆與聯係: 清晰界定 URL(統一資源定位符)和 URI(統一資源標識符)的概念,理解它們在 Web 應用中的應用。 第二章:Servlet API 核心精髓 Servlet 接口與生命周期: 深入理解 `Servlet` 接口,分析 `init()`, `service()`, `destroy()` 方法的調用時機與作用。我們將通過示例代碼演示如何編寫一個簡單的 Servlet,並理解其在 Web 應用中的實例化和管理過程。 HttpServletRequest 與 HttpServletResponse: 詳細講解 `HttpServletRequest` 接口,學習如何獲取請求參數(包括錶單提交、URL參數)、請求頭信息、客戶端 IP 地址等。同時,深入掌握 `HttpServletResponse` 接口,學習如何設置響應狀態碼、響應頭信息、嚮客戶端輸齣內容(文本、HTML、JSON等)。 Servlet 容器(ServletContext): 理解 `ServletContext` 的作用,它代錶著整個 Web 應用的上下文環境。學習如何通過 `ServletContext` 獲取 Web 應用的配置信息、初始化參數,以及在不同 Servlet 之間共享數據。 Filter 與 Listener: 探索 `Filter` 接口,學習如何攔截和處理 Web 請求與響應,例如實現請求日誌記錄、權限校驗、字符編碼轉換等功能。理解 `Listener` 接口,掌握事件監聽機製,例如 `ServletContextListener` 用於 Web 應用的啓動與關閉,`HttpSessionListener` 用於會話的管理等。 RequestDispatcher 與重定嚮/請求轉發: 區分 `RequestDispatcher` 提供的請求轉發(forward)與客戶端重定嚮(redirect)機製,理解它們在頁麵跳轉、資源共享等場景下的應用和區彆。 第三章:JSP 技術與 EL/JSTL JSP 頁麵生命周期: 理解 JSP 頁麵如何被翻譯成 Servlet,以及其從源代碼到可執行代碼的整個過程。 JSP 標簽與指令: 掌握 JSP 中的常用指令(`page`, `include`, `taglib`)和動作標簽(`forward`, `include`, `useBean`, `setProperty`, `getProperty`),理解它們如何簡化頁麵開發。 EL (Expression Language): 學習 EL 錶達式,如何簡潔地訪問 Java Bean 的屬性、獲取請求域、會話域、應用域中的數據。 JSTL (JSP Standard Tag Library): 深入使用 JSTL 標簽庫,包括核心標簽(`c:if`, `c:forEach`, `c:out`)、格式化標簽、XML 標簽等,實現更復雜的頁麵邏輯控製和數據展示,擺脫腳本的束縛。 第二部分:構建現代化 Java Web 應用 在掌握瞭 Java Web 開發的基礎知識後,我們將進入更加廣闊和實用的領域:現代化的 Java Web 應用構建。本部分將重點介紹當前主流的開發模式和技術棧,幫助讀者構建齣更具可維護性、可擴展性和高性能的 Web 應用。 第四章:MVC 設計模式解析 MVC 模式的演進與優勢: 深入理解 Model-View-Controller (MVC) 設計模式的核心思想,分析其在 Web 開發中的重要性,包括關注點分離、代碼重用、可維護性等優勢。 Spring MVC 框架深入解析(非本書核心內容,僅為對比提及): (此處為避免重復,我們僅提及 Spring MVC 的存在,但詳細內容將圍繞本書主題展開)… 設計模式在 Web 應用中的實踐: 探討其他與 Web 開發緊密相關的設計模式,如工廠模式、單例模式、適配器模式、觀察者模式等,以及它們如何在實際項目中應用。 第五章:RESTful API 設計與實踐 REST 架構風格: 理解 REST(Representational State Transfer)架構風格的核心原則,包括無狀態性、客戶端-服務器、統一接口、可緩存性、分層係統、按需代碼(可選)。 HTTP 方法與資源映射: 如何利用 HTTP 方法(GET, POST, PUT, DELETE)來操作資源,以及如何設計清晰、一緻的資源 URI。 JSON 與 XML 數據格式: 掌握 JSON 和 XML 作為數據交換格式的應用,以及如何在 Java 中進行 JSON/XML 的序列化與反序列化。 API 版本控製與文檔: 討論 API 版本控製的策略,以及使用 Swagger/OpenAPI 等工具生成 API 文檔的重要性。 安全性考量: 在設計 RESTful API 時,需要考慮的身份驗證、授權、輸入驗證等安全問題。 第六章:數據持久化與數據庫交互 關係型數據庫基礎: 簡要迴顧關係型數據庫的基本概念,包括錶、字段、主鍵、外鍵、索引等。 JDBC (Java Database Connectivity): 學習使用 JDBC API 直接與數據庫進行交互,理解連接管理、SQL 執行、結果集處理等。 ORM (Object-Relational Mapping) 框架: MyBatis 框架實戰: 深入學習 MyBatis 的核心概念,包括 SQL Mapper, 動態 SQL, 緩存機製, 插件等。通過大量實例演示如何配置 MyBatis,如何編寫 SQL 映射文件,以及如何實現高效的數據庫操作。我們將著重講解 MyBatis 的映射配置,注解開發,以及如何利用其強大的動態 SQL 功能應對復雜查詢。 JPA (Java Persistence API) 概念介紹: (此處僅為介紹,不深入講解) 數據庫連接池: 理解數據庫連接池(如 C3P0, HikariCP)的重要性,以及如何配置和使用連接池來提高數據庫訪問性能。 事務管理: 講解數據庫事務的 ACID 特性,以及如何在 Java 應用中進行有效的事務控製,確保數據的一緻性。 第七章:構建高性能 Web 應用 性能優化基礎: 識彆 Web 應用的性能瓶頸,包括 CPU、內存、I/O、網絡等。 緩存策略: 內存緩存: 介紹 Guava Cache, Caffeine 等內存緩存庫的應用,以及如何在應用層實現緩存。 分布式緩存: 深入學習 Redis 的基本用法,包括數據結構(String, List, Set, Hash, Sorted Set)、持久化機製、集群部署等。通過實際案例演示如何利用 Redis 實現頁麵緩存、數據緩存、Session 共享等,顯著提升應用響應速度。 異步處理與並發: Java 多綫程與並發包: 迴顧 Java 並發編程的基礎,包括綫程創建、同步機製、綫程池等。 CompletableFuture 異步編程: 學習使用 `CompletableFuture` 實現異步非阻塞的 I/O 操作,以及如何構建復雜的異步任務流程。 消息隊列(如 RabbitMQ, Kafka 概念): (此處僅為介紹) 代碼優化技巧: 內存泄漏的排查與避免,減少不必要的對象創建,優化算法復雜度等。 HTTP/2 協議特性: (概念介紹) 第八章:安全防護與身份驗證 Web 安全威脅: 識彆常見的 Web 安全威脅,如 SQL 注入、XSS(跨站腳本攻擊)、CSRF(跨站請求僞造)、DDoS 攻擊等。 輸入驗證與過濾: 講解如何對用戶輸入進行嚴格的驗證和過濾,防止惡意數據的注入。 身份驗證(Authentication): Session 與 Cookie: 理解 Session 和 Cookie 在用戶身份維持中的作用。 JWT (JSON Web Token): 學習 JWT 的工作原理,如何生成、驗證 Token,以及如何在無狀態的 RESTful API 中實現身份驗證。 授權(Authorization): 講解基於角色的訪問控製(RBAC)等授權策略,確保用戶隻能訪問其被授權的資源。 HTTPS: (概念介紹) 第三部分:部署、運維與進階 成功構建應用隻是第一步,如何將其穩定地部署到生産環境,並進行有效的運維管理,是整個 Web 開發生命周期中不可或缺的環節。本部分將涵蓋這些重要內容。 第九章:項目構建與部署 Maven 和 Gradle: 深入學習 Maven 或 Gradle 等構建工具的使用,掌握項目依賴管理、構建生命周期、打包部署等。 Web 服務器配置: 學習如何配置和優化常用的 Web 服務器(如 Tomcat, Jetty),包括連接數、綫程池、日誌等參數。 Docker 容器化部署: 介紹 Docker 的基本概念,如何構建 Docker 鏡像,以及如何將 Java Web 應用部署到 Docker 容器中。 CI/CD 基礎: 簡要介紹持續集成 (CI) 和持續部署 (CD) 的概念,以及如何自動化構建、測試和部署流程。 第十章:日誌管理與監控 日誌框架: 學習使用 SLF4J + Logback/Log4j2 等日誌框架,理解日誌級彆、配置、輸齣方式等。 日誌分析: 探討如何收集、分析日誌,用於排查問題、監控應用狀態。 應用性能監控 (APM): 介紹 APM 工具(如 SkyWalking, Pinpoint)的作用,如何集成 APM 工具來實時監控應用的性能指標、追蹤分布式鏈路。 第十一章:分布式係統初探 微服務架構概念: (概念介紹) 服務發現與注冊: (概念介紹) 分布式事務: (概念介紹) 附錄: 常見問題解答 (FAQ) 推薦資源 結語 Java Web 開發是一個廣闊且不斷發展的領域。本書通過係統性的講解和大量的實踐案例,力求為讀者構建一個紮實的知識體係,並培養解決實際問題的能力。我們鼓勵讀者在學習過程中,不斷實踐,勇於探索,將所學知識融會貫通,最終成為一名優秀的 Java Web 開發者。願本書成為您在 Java Web 開發道路上的一盞明燈,助您披荊斬棘,成就卓越。