作者序 - 陳泓毓
工具清單
環境配置
換檔教學
<aside> 🍔
</aside>
./gradlew bootRun // 單模組Spring Boot執行
下面為各大章節重點節錄
./gradlew.bat build -x test //換檔 指令
前往官方工具建立專案https://start.spring.io/,配置如下圖。
按下 Generate 下載專案zip

並編輯 DemoApplication.java 如下
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@GetMapping("/hello")
public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
return String.format("Hello %s!", name);
}
}

Annotation 註解
@RestController: 告訴 Spring 這是處理 API 請求的Class。自動將回傳的物件(如 Greeting)轉換成 JSON 格式 放在 Response Body 中。@GetMapping("/greeting"): 當前端發送一個 GET 請求到 /greeting 這個 URL 時,會執行下方的方法。@RequestParam: 取得 URL 中的 Query Parameters。RESTful API 是Roy Thomas Fielding 博士於2000提出的一種 API 設計風格,以實現無狀態(Stateless)的 CRUD 操作,常用於前後端分離、微服務架構,資料格式多為 JSON。
RESTful API在表示上會用 **Verb (動詞) + Noun (名詞)**來表示比如說 **GET**/users 表示 從伺服器拿users相關資料
POSTGETPUT / PATCHDELETE| 註解 | 位置 | 適用場景 | 範例 |
|---|---|---|---|
@RequestParam |
Query String | 篩選、排序、分頁 | /search?q=java |
@PathVariable |
URL Path | 指定特定 ID 資源 | /orders/101 |
@RequestBody |
Request Body | 新增或修改複雜資料 | {"name":"A",...} |
@RequestHeader |
Headers | 傳送驗證 Token 或語系 | Authorization: ... |
<aside> 🍃
專案中常見的util可以下載: https://github.com/Chen11111112/springboot-util.git
</aside>
在實作Service時,我們習慣使用**
Interface + Impl**,即 介面與實作分離 的方式,這有助於 解耦 與 單元測試 (Mocking)。
| 等級 | 說明 | 使用場景 |
|---|---|---|
| DEBUG | 關鍵變數的值 | 用於開發階段確認邏輯是否正確。 |
| INFO | 系統重要節點 | 例如:系統啟動成功、收到一筆新訂單。 |
| WARN | 潛在的問題 | 雖然不影響運行,但可能有隱患(如:硬碟空間快滿了)。 |
| ERROR | 發生錯誤 | 程式出錯、拋出異常,必須立即關注。 |
Rollback : Transaction Management 事務管理, @Transactional 「要麼全部成功,要麼全部失敗」。
JpaRepository 來快速獲得基本的CRUD方法,而不須用編寫實現類別。