Spring Boot 深入淺出:從看懂一個請求,到能驗證一次改動
打開舊專案,看得懂 Java 語法,卻不確定 Controller 由誰建立、設定從哪裡進來,或 @Transactional 到底包住哪幾行。這時再多背幾個 annotation,往往還是接不起執行流程。這個系列從同一個工單 API 往下走,每次只多理解一個邊界。
接著學:JBoss EAP 獨立系列,基礎與實作先決條件:Java 語法夠用即可
需要能閱讀 class、constructor、interface、例外與泛型。看到 record,可以先理解成會產生欄位存取方法、equals 等功能的資料類別;本例用 ticket.id() 取值。HTTP 部分會解釋 method、status 與 JSON;不要求你先懂 Spring、Hibernate 或 EAP。Maven 需要能在終端執行,IDE 使用哪一套不影響順序。
本系列固定使用 Java 21 與 Boot 3.5.16,配合這次舊系統升級的目標。這不是宣稱它是最新版本。不要把 Boot 4 的 starter、測試 import 或 Servlet 要求直接貼進這個專案。官方文件查核日為 2026-10-04;範例的實際測試範圍放在下載檔的 VALIDATION.md。
六堂課,各帶走一個可以自己回答的問題
| 課程 | 學完要能說明 | 範例位置 |
|---|---|---|
| 01 啟動 | main 怎麼變成可以接 HTTP 的程式 | pom.xml、LabApplication |
| 02 物件 | 誰建立 Service,為什麼不用自己 new | Controller/Service constructor |
| 03 設定 | 同一個 key 出現三次,最後誰生效 | LabProperties、兩份 properties |
| 04 HTTP | JSON 如何進入方法,400 與 404 在哪裡決定 | CreateTicket、ApiErrors |
| 05 交易 | 第二次寫入失敗,第一次是否真的回滾 | TicketStore、createBatch |
| 06 驗證 | 哪些測試證明什麼,JAR 與 WAR 差在哪 | LabIntegrationTest、打包產物 |
共用範例:一張工單走完 HTTP 與資料庫
HTTP → TicketController → TicketService → TicketStore → H2
↘ ApiErrors → HTTP error response下載檔是完整的小型專案,不是六份互相衝突的程式片段。第一課只看啟動與 ping,後面才打開其餘類別。工單只含 id 和 title;使用記憶體 H2 與 JDBC,讓 SQL、提交與回滾可以直接觀察。它沒有接 DB2、MQ,也沒有模擬公司的業務資料。
這是一個只綁定本機位址、沒有登入功能的學習程式。它沒有展示完整授權、稽核、持久化資料遷移或正式環境配置;不要把「教學可以跑」當成「可以對外部署」。JPA/Hibernate 與 Spring Security 需要另有練習,這裡會指出它們位於哪一層。
讀法:先預測,再動手,最後對照證據
每課先看問題與一小段程式,預測結果後再執行練習。答案放在練習後面,方便停下來自己想。卡住時只追一條路徑:例如 400 是 JSON 解析、驗證還是 Service 造成。不要一次請 AI 解釋整個 repo,也不必把每一行都抄成筆記。
可以請 AI:「只根據這三個檔案,說明這個請求的入口、物件來源與失敗分支;指出沒有證據的地方。」隔天再試著不看筆記講出路徑。能指出程式與測試,才知道自己理解的是這個專案,而不是一段通用摘要。
Spring Boot 之後,再學 EAP/JBoss
下一階段會從應用伺服器的責任開始:部署 WAR/EAR、模組載入、JNDI、DataSource、EJB/MDB、交易與管理 log。JBoss 是產品家族與歷史名稱,JBoss EAP 是 Red Hat 的企業應用平台;它們不是必須重複學兩遍的兩套入門。先把應用內部學會,再看外部容器接手哪些責任。
需要先對照整批升級:閱讀 EAP × Boot 升級地圖下載本系列完整工單 API 範例(ZIP)下一課:01:啟動與第一個 API