Spring 框架新手指南:深入理解 Spring 的核心概念與應用
更新日期: 2025 年 2 月 21 日
本文為 Java 常見框架與伺服器 系列文,第 9 篇:
- Web 伺服器與應用伺服器的區別與搭配——打造高效能 Web 架構
- 什麼是 Servlet?——Java Web 開發的核心技術
- Tomcat 入門指南:從零開始了解 Java Web 伺服器
- Apache 軟體基金會 (ASF) 完整指南:新手入門必讀
- 新手入門:什麼是 JBoss?完整指南
- 新手指南:什麼是 Red Hat?完整介紹與應用解析
- 新手指南:什麼是 WebLogic?完整介紹與應用解析
- 新手指南:什麼是 WebSphere?完整介紹與應用解析
- Spring 框架新手指南:深入理解 Spring 的核心概念與應用 👈進度
- Spring MVC 初學者指南:深入了解 Spring 的強大框架
在 Java 企業級開發領域,Spring 框架 無疑是最受歡迎的技術之一。
它是一個開源的輕量級框架,提供了許多強大的功能,如 依賴注入(DI)、面向切面編程(AOP)、Spring MVC、Spring Boot 等,極大地提升了開發效率和系統的可維護性。
對於剛接觸 Java 開發的初學者來說,Spring 可能會顯得有些複雜,但只要掌握其核心概念和基本用法,你將能夠更輕鬆地構建強大、靈活的企業級應用程式。
本篇文章將帶你詳細了解 Spring 框架的基礎概念、主要組件以及如何開始使用它來開發 Web 應用。
什麼是 Spring?
Spring 框架本身是一個 大框架(Spring Framework),而 Spring MVC、Spring Security、Spring Data 等則是它的子模組(Modules)。
這些模組圍繞著 Spring 的核心概念來解決不同的應用場景。讓我們用一個清楚的結構來說明它們之間的關係。
Spring Framework(Spring 框架)——核心基礎
Spring Framework 是 Spring 技術生態的核心,負責提供基本的基礎功能,如:
- 輕量級(Lightweight):Spring 框架本身非常輕量,不會影響應用的性能。
- 控制反轉(IoC, Inversion of Control):透過 依賴注入(Dependency Injection, DI) 機制,減少對象之間的耦合,使得系統更易維護和測試。
- 面向切面編程(AOP, Aspect-Oriented Programming):允許開發者將通用功能(如日誌、事務管理等)與業務邏輯分離,提高程式碼的可讀性和復用性。
- 整合性強(Integration with other frameworks):Spring 可以無縫整合 Hibernate、MyBatis、JPA、RabbitMQ、Kafka 等其他技術,方便開發者構建完整的應用。
- Spring Boot 提供快速開發:Spring Boot 是基於 Spring 框架的延伸,能夠幫助開發者快速建立應用程式,並內建許多預設設定,減少繁瑣的配置工作。
它本身並不是專門用來開發 Web 應用、數據庫存取或安全管理的,而是提供了一套強大的基礎架構,讓開發者能夠在上面構建更專門的應用。
Spring Framework 只是基礎,Spring MVC、Spring Security、Spring Data 等都是基於它擴展的模組!
Spring 相關的子模組與它們的關係
Spring 框架根據不同的應用需求,發展出了多個專門的子模組。以下是它們的關係:
Spring MVC(Web 開發框架)
🔹 Spring MVC 是 Spring 框架的一個 Web 層模組,用來開發 Web 應用與 REST API。
它基於 MVC(Model-View-Controller) 設計模式,負責處理 HTTP 請求、響應與視圖解析。
關鍵功能
- 提供 DispatcherServlet(前端控制器),負責請求調度
- 支持 RESTful API 開發
- 與 JSP、Thymeleaf、FreeMarker 等視圖技術整合
- 可與 Spring Security 無縫整合,實現身份驗證與權限管理
📌 適用場景
- 開發 Web 網站(如企業網站、電子商務平台)
- 開發 REST API(如手機 App 的後端 API)
🛠 簡單示例
@Controller
@RequestMapping("/hello")
public class HelloController {
@GetMapping
@ResponseBody
public String sayHello() {
return "Hello, Spring MVC!";
}
}
這個 Controller 負責處理 /hello
路徑的請求,並返回 "Hello, Spring MVC!"
。
Spring Security(安全管理)
🔐 Spring Security 是 Spring 框架的一個安全管理模組,負責身份驗證(Authentication)與授權(Authorization)。
它為 Spring MVC、Spring Boot 提供完整的 登入驗證、權限管理、OAuth2/JWT 支持。
關鍵功能
- 用戶登入與登出(Authentication)
- 權限與角色管理(Authorization)
- 防範 CSRF(跨站請求偽造)、XSS 攻擊
- 支持 OAuth2 / JWT(JSON Web Token)
- 與 Spring MVC、Spring Boot 無縫整合
📌 適用場景
- 管理後台系統(Admin Panel),限制不同管理員的權限
- API 安全保護,防止未授權的存取
- 企業級身份管理(SSO、OAuth2)
🛠 簡單示例
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/admin").hasRole("ADMIN") // 只有 ADMIN 角色能訪問 /admin
.anyRequest().authenticated() // 其他請求都需要登入
.and()
.formLogin(); // 啟用表單登入
}
}
這樣 /admin
只能讓 ADMIN 角色 存取,而其他頁面則需要登入。
Spring Data(數據存取框架)
🗄️ Spring Data 是 Spring 提供的數據存取模組,簡化對資料庫的操作。
它可以與 JPA、Hibernate、MyBatis、MongoDB、Redis 等多種數據技術整合,讓開發者更輕鬆地操作數據庫。
關鍵功能
- 簡化 DAO(Data Access Object)開發
- 支持 JPA、Hibernate、MyBatis
- 提供 Repository 機制,減少樣板代碼
- 支持 NoSQL(如 MongoDB、Elasticsearch、Redis)
📌 適用場景
- 開發 CRUD 應用(增刪改查)
- 開發數據密集型應用
🛠 簡單示例(使用 Spring Data JPA)
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
User findByUsername(String username);
}
這樣你就可以直接調用 userRepository.findByUsername("Tom")
來查詢數據,Spring Data 會自動生成 SQL 查詢,開發者不需要手寫 SQL。
Spring Boot(快速開發框架)
🚀 Spring Boot 是基於 Spring 框架的快速開發工具,目標是減少 Spring 的配置工作,讓開發更簡單。
Spring Boot 整合了 Spring MVC、Spring Security、Spring Data 等模組,並且內建了一個 嵌入式 Web 伺服器(如 Tomcat),可以直接運行 Spring 應用,不需要額外部署。
關鍵功能
- 自動配置(Auto Configuration)
- 內建 Web 伺服器(Embedded Tomcat、Jetty)
- 簡化依賴管理
- 與 Spring Security、Spring Data 無縫整合
📌 適用場景
- 快速構建 Web 應用
- 開發微服務(Microservices)
🛠 簡單示例
@SpringBootApplication
public class SpringBootDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootDemoApplication.class, args);
}
}
只要執行 SpringApplication.run()
,你的應用就能夠立即運行,無需額外部署 Tomcat!
它們之間的關係(總結)
我們可以將它們的關係整理成這樣:
graph LR A["🌱 Spring Framework"] A -->|"🔗 核心基礎"| B["🚀 Spring Boot (簡化配置,快速開發)"] subgraph Spring Modules B --> C["🌍 Spring MVC (Web 請求 & API 開發)"] B --> D["🔐 Spring Security (身份驗證 & 權限管理)"] B --> E["🗄️ Spring Data (數據存取 & 整合 JPA, MyBatis)"] end A -->|"可獨立使用"| C A -->|"可獨立使用"| D A -->|"可獨立使用"| E
🌟 簡單來說:
- Spring Framework 是基礎
- Spring MVC 解決 Web 需求
- Spring Security 解決安全需求
- Spring Data 解決數據存取
- Spring Boot 是整合它們的最佳選擇,讓開發變簡單!
這樣你就可以針對不同的需求,選擇合適的 Spring 模組來使用!🚀
如何開始使用 Spring?
對於新手來說,學習 Spring 最簡單的方式就是透過 Spring Boot,它提供了一套簡化的設定,能夠讓你更快上手。
建立 Spring Boot 專案
最快的方法是使用 Spring Initializr 來建立專案:
- 選擇 Spring Boot 版本(如 3.x)。
- 添加 Spring Web、Spring Data JPA 等依賴。
- 生成並下載專案。
簡單的 Spring Boot REST API
@RestController
@RequestMapping("/api")
public class ApiController {
@GetMapping("/greet")
public String greet() {
return "Hello, Spring Boot!";
}
}
啟動應用後,訪問 http://localhost:8080/api/greet
,將會返回:
Hello, Spring Boot!
結語
Spring 框架是一個功能強大、靈活且易擴展的企業級開發框架,學會它可以幫助開發者構建穩定、安全且高效的 Java 應用程式。
如果你是新手,建議從 Spring Boot 入門,然後逐步學習 Spring MVC、Spring Security、Spring Data 等進階功能。
希望這篇文章能夠幫助你理解 Spring 的基礎概念,並鼓勵你開始動手實作!🚀