iT邦幫忙

2025 iThome 鐵人賽

DAY 3
0
Software Development

spring boot 3 學習筆記系列 第 3

Day03 - Spring Boot 簡介

  • 分享至 

  • xImage
  •  

Spring 簡介

Spring 是一個輕量級的開源框架,專為 Java 平台設計,主要用於開發企業級應用程式。它最早由 Rod Johnson 於 2002 年在其著作《Expert One-on-One J2EE Design and Development》中提出,目標是簡化企業應用開發的複雜性。Spring 透過控制反轉(Inversion of Control, IoC)依賴注入(Dependency Injection, DI)切面導向程式設計(Aspect-Oriented Programming, AOP),幫助開發者以 鬆耦合(Loose coupling) 的方式構建模組化的應用程式,提高可維護性與可擴展性。

核心概念的比喻

  • 控制反轉(IoC):就像去餐廳用餐時,不是你自己跑去廚房煮,而是由廚師替你準備餐點,掌控權「反轉」給框架。
  • 依賴注入(DI):就像點餐時,服務生自動將餐點送到你的桌上,你不用自己去找食材或烹飪。
  • 切面導向程式設計(AOP):就像餐廳在上所有餐點前都會統一收取服務費,這是一個「橫切」行為,不用在每道菜單獨加上服務費。

這些設計理念讓開發者能更專注於業務邏輯,而不是基礎設施的細節。

Spring 框架的發展與演進

隨著技術發展,Spring 框架衍生出許多模組與子專案,以滿足不同應用場景:

  • Spring Boot
    提供開箱即用的配置,簡化 Spring 應用的開發與部署,使開發者能夠專注於業務邏輯,而無需花費大量時間處理框架設定。

  • Spring Cloud
    支援微服務架構,提供分散式系統的解決方案,如服務發現(Service Discovery)、配置管理(Configuration Management)、負載平衡(Load Balancing)等功能。

  • Spring Security
    提供強大的身份驗證(Authentication)與授權(Authorization)機制,確保應用程式的安全性,並支援 OAuth2、JWT、SSO 等安全技術。

  • Spring Data
    簡化資料存取層的開發,提供統一的 API 來支援關聯式(如:MySQL、PostgreSQL)和非關聯式(如:MongoDB、Redis)資料庫。

  • Spring Batch
    專為批次處理設計,適用於大規模資料處理,如資料遷移、報表生成等場景。

Spring 全家桶架構示意圖

Spring (核心框架)
   ├── Spring Boot (簡化開發)
   ├── Spring Security (安全機制)
   ├── Spring Data (資料存取)
   ├── Spring Cloud (微服務)
   └── Spring Batch (批次處理)

為什麼選擇 Spring?

Spring 之所以受到開發者的廣泛青睞,主要歸因於以下幾點優勢:

  1. 輕量級與靈活性

    • Spring 核心模組小巧且易於擴展,開發者可以根據需求選擇合適的組件,而不需要使用整個框架。
  2. 提高開發效率

    • 透過 DI 和 AOP 機制,減少樣板程式碼(Boilerplate code),讓開發者專注於業務邏輯,提高生產力。
  3. 高度可測試性

    • Spring 提供良好的測試支援,讓開發者能夠透過單元測試(Unit Testing)和整合測試(Integration Testing)確保應用的穩定性。
  4. 強大的整合能力

    • Spring 能與眾多熱門技術無縫整合,如 Hibernate、MyBatis、Kafka、RabbitMQ、ElasticSearch 等,讓企業應用開發更具彈性。
  5. 微服務與雲端支援

    • 透過 Spring Boot 和 Spring Cloud,開發者可以快速構建可擴展的微服務應用,並支援 Kubernetes、Docker、AWS、Azure、GCP 等雲端平台。

Spring Boot 簡介

Spring Boot 是基於 Spring 的增強框架,由 Pivotal Team 開發,目標是簡化 Spring 應用的開發與部署。它透過自動配置(Auto Configuration)與 Starter 套件,讓開發者能專注於業務邏輯,而不需煩惱繁瑣的配置

Spring 與 Spring Boot 的差別比喻

  • Spring:像是一個零件工廠,提供各種零組件,讓你自由組裝一台車。
  • Spring Boot:像是工廠已經組裝好的一台車,你只需要根據需求調整顏色或加裝配件,就能馬上開上路。

Spring Boot 的核心特點

  1. 簡化開發
    Spring Boot 透過自動配置(Auto Configuration)和內建的 Starter 套件減少設定,大幅減少了開發者手動配置的時間與精力。

  2. 提高效率
    Spring Boot 提供了豐富的內建功能,包括 Web 應用開發、資料庫存取、安全性管理、監控與日誌管理等,使開發者能夠更快速地構建應用程式,並確保其高效與穩定。

  3. 易於部署
    Spring Boot 應用程式可以直接打包為可執行的 JAR 檔案,內建嵌入式伺服器(如 Tomcat、Jetty、Undertow),無需依賴外部 Web 容器或應用伺服器,大幅簡化了部署流程,也降低了維運的負擔。

  4. 微服務支援
    Spring Boot 是微服務架構的理想選擇,透過 Spring Cloud 整合,能夠輕鬆建構彈性高、可擴展的分散式系統。

  5. 易於測試
    Spring Boot 的程式架構清晰,並提供內建的測試工具,使單元測試與整合測試變得更加簡單且高效。

Spring Boot 的核心組件

  • Spring Boot Starter
    預先配置的一組依賴套件,使開發者能夠輕鬆建立各種類型的應用程式,例如 Web 應用、資料庫存取應用等。

  • Spring Boot Actuator
    內建監控與管理功能,提供應用程式的健康狀態檢查、指標收集、日誌監控等,方便運維管理。

  • Spring Boot CLI
    命令列工具,可用於快速建立與執行 Spring Boot 應用程式,適合快速開發與原型驗證。

最小可執行程式碼範例

以下是一個最小的 Spring Boot 應用程式:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

執行後,應用程式會啟動一個內建的 Tomcat 伺服器,你就擁有一個可運行的 Spring Boot 專案了。

Spring Boot 的應用場景

Spring Boot 適用於各種應用場景,包括但不限於:

  • Web 應用程式:透過 Spring Boot 快速建立基於 Spring MVC 的 Web 應用程式。
  • RESTful API 服務:適合用於開發輕量級的 REST API 服務。
  • 批次處理應用程式:透過 Spring Batch 來處理大量資料的自動化任務。
  • 基於訊息的應用程式:支援 Kafka、RabbitMQ 等訊息佇列技術,實現異步通訊。
  • 微服務架構:透過 Spring Cloud 整合,快速建構可擴展的微服務系統。

參考資料


上一篇
Day02 - Spring Boot 3 開發環境建置(2) - IntelliJ IDEA Community 開發工具下載並安裝 (適用於 Windows)
下一篇
Day04 - 快速建立第一個簡單的 Spring Boot 3 應用程式
系列文
spring boot 3 學習筆記18
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言