┌─────────────────────────────────────┐
│ 客戶端 │
│ 瀏覽器 / App / 小程序 / Postman │
└──────────────┬──────────────────────┘
│ HTTP/HTTPS (JSON, Form, Protobuf)
▼
┌─────────────────────────────────────┐
│ Web 容器 │
│ Tomcat / Jetty / Undertow │
│ - 監聽端口 (8080) │
│ - 解析 HTTP 請求 │
│ - 管理 Servlet 生命週期 │
└──────────────┬──────────────────────┘
│ Servlet API (Request/Response/Session)
▼
┌─────────────────────────────────────┐
│ Web 框架 │
│ Spring MVC / Struts2 / Servlet原生 │
│ - 路由分發 (@RequestMapping) │
│ - 參數綁定、校驗、類型轉換 │
│ - 視圖解析 (JSP/Thymeleaf/JSON) │
└──────────────┬──────────────────────┘
│ Service 層調用 (業務邏輯)
▼
┌─────────────────────────────────────┐
│ 業務邏輯層 │
│ Service / Manager / BO │
│ - 事務管理 (@Transactional) │
│ - 複雜業務編排 │
└──────────────┬──────────────────────┘
│ DAO/Repository 調用
▼
┌─────────────────────────────────────┐
│ 數據訪問層 │
│ MyBatis / JPA(Hibernate) / JDBC原生 │
│ - SQL 構建/映射 │
│ - 連接池 (HikariCP/Druid) │
└──────────────┬──────────────────────┘
│ JDBC 協議
▼
┌─────────────────────────────────────┐
│ 數據庫 │
│ MySQL / PostgreSQL / Oracle / Redis │
│ - 持久化存儲 │
│ - 索引、事務、鎖、複製 │
└─────────────────────────────────────┘
| 層級 | 核心技術 | 作用 |
|---|---|---|
| 語言 | Java (JDK 8/11/17/21) | 運行時基礎、類加載、GC、多線程 |
| Web 規範 | Servlet API (javax/ jakarta.servlet) | 容器與應用解耦的標準契約 |
| 框架 | Spring Boot (Spring MVC + 自動配置) | 約定優於配置、嵌入式容器、Starter 生態 |
| ORM | MyBatis (SQL 可控) / JPA (對象映射) | 對象關係映射、緩存、懶加載 |
| 連接池 | HikariCP (默認) / Druid | 高性能數據庫連接複用 |
| 數據庫 | MySQL 8.0 / PostgreSQL 15 | 關係存儲、ACID、SQL 標準 |
1997 Servlet API 1.0 → Java 進入 Web 領域
1999 JSP 1.1 → 動態頁面模板
2003 Spring Framework 1.0 → IOC/AOP 解耦
2004 Hibernate 3.0 → ORM 主流化
2005 Struts 1.x 流行 → MVC 模式普及
2007 Spring 2.5 + 注解 → 配置簡化
2011 Spring 3.1 + JavaConfig → 無 XML 配置
2014 Spring Boot 1.0 → 微服務時代、嵌入式容器
2017 Spring Boot 2.0 / WebFlux → 響應式編程
2022 Spring Boot 3.0 / Jakarta EE 9+ → Java 17+ 基線、原生圖像
原最佳回答文字描述三者關係,上文提供分層架構圖、關鍵技術表、演進時間線,構建完整知識骨架。