Spring 框架以IoC 容器與AOP 切面為雙核心,構建企業級應用基礎設施。本文系統梳理五大模組架構、IoC/DI 核心思想、注入方式、Bean 作用域與生命週期全流程。
| 模組 | 核心套件 | 功能定位 |
|---|---|---|
| 資料存取/整合 | JDBC, ORM, OXM, JMS, Transaction | 統一 DAO 異常體系、模板化簡化資料庫操作、聲明式事務 |
| Web/遠程 | MVC, WebService, Portlet | Web 工具類、檔案上傳、視圖技術整合、Struts2 等 MVC 整合 |
| AOP | Spring AOP, AspectJ | 橫切關注點模組化(日誌、事務、安全、快取) |
| 核心容器 | Beans, Core, Context, SpEL | IoC 容器、Bean 生命週期、事件機制、國際化、資源載入、表達式語言 |
| 測試 | TestContext, Spring MVC Test | 單元/整合測試支援、TestContext 框架 |
| 特性 | BeanFactory | ApplicationContext | |
|---|---|---|---|
| 定位 | IoC 核心介面,延遲載入 | 擴展容器,啟動即載入單例 | |
| 企業級功能 | 無 | 國際化、事件發布、資源載入、AOP、JNDI、EJB、排程、郵件 | |
| 常用實作 | XmlBeanFactory | ClassPathXmlApplicationContext, AnnotationConfigApplicationContext |
| 作用域 | 描述 | 銷毀回調 | 適用場景 |
|---|---|---|---|
| singleton | 容器內單一共享實例 | 容器關閉執行 | 無狀態服務 |
| prototype | 每次請求新建實例 | 不執行 | 有狀態物件 |
| request | 每個 HTTP 請求一實例 | 請求結束執行 | Web 請求級資料 |
| session | 每個 HTTP Session 一實例 | Session 失效執行 | 用戶會話資料 |
| global session | Portlet 全域 Session | 同 session | Portlet 環境 |
深度掌握 Spring 核心架構與 IoC/AOP 精髓,是構建高內聚、低耦合、可測試、可演進企業級應用的基石。