入門→OPC · 公開核心+會員工作紙 Java · Spring Boot

Spring/Spring Boot:從 REST 到 OPC 可呼叫 API

Java 生態 · Initializr · DI/JPA 概覽 · 聯絡 psyche@mail.grokbot.com

學習貼士

學習貼士

  • Spring=生態;Boot=開箱即用。
  • JDK 17/21+Initializr。
  • OPC=API/webhook;防衛向認證。
  • 非贊助;跟官方文件。

課節進度

開始學習吧!勾選完成的課節。

0% 完成(0/10 課節)

  • 11. Spring vs Boot
  • 22. 安裝 JDK+Initializr
  • 33. 第一個 REST
  • 44. 依賴注入
  • 55. Data/JPA
  • 66. OPC API
  • 77. 實作範例
  • 88. 官方來源
  • 99. 練習清單
  • 1010. 常見問題

提示:滾動到課節會自動標記完成;點擊課節仍可標記/取消(存於本機)。

一句話:Spring Boot 開 REST → 懂 DI/JPA → 接 OPC Agent API。

1. Spring vs Spring Boot(公開)

項目Spring FrameworkSpring Boot
角色核心生態自動設定+內建伺服器
新手概念多由呢度開始
產出靈活嵌入可執行 jar
  • 適合:企業 Java、穩定 API。
  • 輕量可用 Python;UI 見 React。

2. How-to:安裝 JDK+Spring Initializr

  1. 裝 JDK:java -version。
  2. Initializr:Maven/Java/Boot 穩定版。
  3. 先 Spring Web;資料再加 JPA。
  4. Generate → IDE 打開。
  5. 跑:./mvnw spring-boot:run(埠 8080)。
唔好硬編碼秘密;見安全基礎。

3. 第一個 REST Controller

新增 Controller:

package com.example.demo.web;

import java.util.Map;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
  @GetMapping("/api/hello")
  public Map<String, String> hello() {
    return Map.of("message", "hello from Spring Boot");
  }
}
  1. curl/瀏覽器開 /api/hello。
  2. 註解對應 JSON+GET。
  3. 之後加 POST+RequestBody。

4. 依賴注入(DI)基礎

  • IoC=容器建 bean。
  • Service/Repository/Component/RestController。
  • 偏好建構子注入。
@Service
public class GreetingService {
  public String greet(String name) {
    return "Hello, " + name;
  }
}

@RestController
public class HelloController {
  private final GreetingService greetingService;
  public HelloController(GreetingService greetingService) {
    this.greetingService = greetingService;
  }
  @GetMapping("/api/greet")
  public Map<String, String> greet() {
    return Map.of("message", greetingService.greet("OPC"));
  }
}

5. Spring Data/JPA 概覽(公開)

  • JPA+常見 Hibernate。
  • Repository 減少 boilerplate。
  • H2 先 → 再 Postgres/SQL 課。
  • 生產前讀官方 Data 文件。

6. OPC 何時用 Spring(API/Webhook)

  • 邏輯喺 Boot;Agent 編排。
  • Webhook:驗簽、冪等、日誌。
  • HTTPS、驗證、認證、最小權限、限速。

7. 三個實作範例

A. Hello REST(15 分鐘)

Initializr → Hello → curl。

B. POST JSON 建立「任務」

public record TaskRequest(String title) {}
public record TaskResponse(String id, String title) {}

@PostMapping("/api/tasks")
public TaskResponse create(@RequestBody TaskRequest req) {
  // 教學版:記憶體 Map;之後再換 JPA
  String id = java.util.UUID.randomUUID().toString();
  return new TaskResponse(id, req.title());
}

" data-en="curl -X POST localhost:8080/api/tasks -H 'Content-Type: application/json' -d '{"title":"ship OPC"}'" data-i18n-html="1">用 curl POST JSON。

C. Agent webhook 草圖

@PostMapping("/hooks/agent")
public Map<String, Object> onAgent(@RequestHeader(value="X-Hook-Secret", required=false) String secret,
                                   @RequestBody Map<String, Object> body) {
  // 1) 比對 secret(來自環境變數)2) 驗證必要欄位 3) 入隊/寫庫 4) 回 202
  return Map.of("accepted", true);
}

先本機驗,再公網;配 n8n/Agent。

9. 練習清單

  • □ Initializr+run
  • □ GET hello JSON
  • □ DI Service
  • □ POST 資源
  • □ webhook+secret

常見問題

Spring 同 Spring Boot 有咩分別?

Boot=開箱即用起步。

一定要學 Maven/Gradle 嗎?

識基本+用 mvnw 即可起步。

OPC 點樣用 Spring?

API/webhook+防衛控制。

同 Python FastAPI 點選?

企業 JVM→Spring;快速原型→Python。

🔒 會員專屬:專案起步・REST 設計・Agent API・防衛清單

解鎖高階工作紙。會員 HK$50/月。

登入解鎖 開通會員

課程完成標記

登入會員後可將整門課標記完成並同步至儀表板。