Spring 框架採用高度模塊化設計,3.2.9 版本包含 21 個獨立 JAR 包。理解每個模塊的功能定位與依賴關係,是精準構建項目依賴、避免 JAR 衝突、優化構建體積的關鍵。本文逐一解析所有模塊,並提供完整依賴拓撲圖。
| JAR 包名稱 | 核心功能定位 | 典型應用場景 |
|---|---|---|
| spring-aop-3.2.9.RELEASE.jar | AOP 實現核心,含代理創建、切點解析、攔截器鏈 | 聲明式事務、日誌攔截、性能監控、安全檢查 |
| spring-aspects-3.2.9.RELEASE.jar | 整合 AspectJ,提供 @AspectJ 註解支持與 LTW(負載時編織) | 使用 AspectJ 語法、跨切面複用、域對象依賴注入 |
| spring-beans-3.2.9.RELEASE.jar | IoC 容器核心:BeanDefinition、BeanFactory、屬性編輯器、類型轉換 | 所有 Spring 應用必需,Bean 生命周期管理基石 |
| spring-build-src-3.2.9.RELEASE.jar | 構建源碼包,非運行時依賴 | 框架開發調試、源碼閱讀 |
| spring-context-3.2.9.RELEASE.jar | 上下文擴展:ApplicationContext、事件發布、資源加載、國際化、調度、JNDI、EJB、緩存、視圖解析 | 企業級應用核心容器,Web 應用必需 |
| spring-context-support-3.2.9.RELEASE.jar | Context 擴展支持:EhCache、JCA、JMX、JavaMail、Quartz、Timer | 第三方技術集成(郵件、調度、緩存、管理) |
| spring-core-3.2.9.RELEASE.jar | 核心工具類:資源訪問、異常體系、工具類、日誌適配 | 所有模塊基礎依賴,項目必引 |
| spring-expression-3.2.9.RELEASE.jar | SpEL 表達式語言:屬性訪問、方法調用、集合操作、邏輯運算 | @Value 注解、XML 配置動態值、條件化 Bean 定義 |
| spring-framework-bom-3.2.9.RELEASE.jar | Maven BOM(物料清單),統一版本管理 | 依賴版本鎖定,避免傳遞依賴版本衝突 |
| spring-instrument-3.2.9.RELEASE.jar | JVM 代理儀表,支持類文件轉換(如 LTW) | 生產環境熱部署、性能分析、AOP 織入 |
| spring-instrument-tomcat-3.2.9.RELEASE.jar | Tomcat 專用儀表實現,支持 Tomcat 類加載器織入 | Tomcat 環境下 LTW、應用隔離織入 |
| spring-jdbc-3.2.9.RELEASE.jar | JDBC 模板化:JdbcTemplate、SimpleJdbcInsert、NamedParameterJdbcTemplate、異常轉換 | 簡化 JDBC 操作、統一異常處理、事務管理基礎 |
| spring-jms-3.2.9.RELEASE.jar | JMS 1.0.2/1.1 支持:消息發送/接收、监聽容器、事務會話 | 異步消息、解耦系統、異步任務處理 |
| spring-orm-3.2.9.RELEASE.jar | ORM 整合:Hibernate、JPA、iBATIS、JDO、TopLink/OJB(Hibernate 4+ 獨立包) | 持久層框架整合、Session/EntityManager 管理 |
| spring-oxm-3.2.9.RELEASE.jar | Object/XML 映射:JAXB、Castor、XMLBeans、JiBX、XStream | XML 配置、Web Service、報文轉換 |
| spring-struts-3.2.9.RELEASE.jar | Struts 1.x 整合(已過時,Struts 2 使用插件機制) | 維護老項目 Struts 1 集成 |
| spring-test-3.2.9.RELEASE.jar | 測試支持:SpringJUnit4ClassRunner、TestContext、Mock 對象、事務回滾 | 單元/集成測試、上下文緩存、測試數據準備 |
| spring-tx-3.2.9.RELEASE.jar | 事務抽象:PlatformTransactionManager、事務定義、同步管理、聲明式/編程式事務 | JDBC/Hibernate/JPA/JTA 統一事務控制 |
| spring-web-3.2.9.RELEASE.jar | Web 基礎:WebApplicationContext、MultipartResolver、Filter、JSF/Struts 整合 | Web 應用啟動、文件上傳、上下文加載 |
| spring-webmvc-3.2.9.RELEASE.jar | Spring MVC 核心:DispatcherController、HandlerMapping、ViewResolver、國際化、主題、標簽庫 | 構建 REST API、傳統 MVC Web 應用 |
| spring-webmvc-portlet-3.2.9.RELEASE.jar | Portlet MVC 支持(JSR-168/286) | 門戶應用開發 |
Spring 內部依賴遵循「核心向外輻射」原則,spring-core 為絕對根節點:
1) spring-core.jar ← commons-collections.jar
2) spring-beans.jar ← spring-core.jar + cglib-nodep-2.1_3.jar
3) spring-aop.jar ← spring-core.jar + spring-beans.jar + cglib-nodep-2.1_3.jar + aopalliance.jar
4) spring-context.jar ← spring-core.jar + spring-beans.jar + spring-aop.jar + commons-collections.jar + aopalliance.jar
5) spring-dao.jar ← spring-core.jar + spring-beans.jar + spring-aop.jar + spring-context.jar
6) spring-jdbc.jar ← spring-core.jar + spring-beans.jar + spring-dao.jar
7) spring-web.jar ← spring-core.jar + spring-beans.jar + spring-context.jar
8) spring-webmvc.jar ← spring-core.jar + spring-beans.jar + spring-context.jar + spring-web.jar
9) spring-hibernate.jar ← spring-core/beans/aop/dao/jdbc/orm/web/webmvc.jar (已過時)
10) spring-orm.jar ← spring-core/beans/aop/dao/jdbc/web/webmvc.jar
11) spring-remoting.jar ← spring-core/beans/aop/dao/context/web/webmvc.jar
12) spring-support.jar ← spring-core/beans/aop/dao/context/jdbc.jar
13) spring-mock.jar ← spring-core/beans/dao/context/jdbc.jar
cglib(代理生成)和 aopalliance(接口標準)<dependencies>
<!-- 核心三角鐵 -->
<dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>3.2.9.RELEASE</version></dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>3.2.9.RELEASE</version></dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>3.2.9.RELEASE</version></dependency>
<!-- Web MVC -->
<dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>3.2.9.RELEASE</version></dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>3.2.9.RELEASE</version></dependency>
<!-- AOP (事務必需) -->
<dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>3.2.9.RELEASE</version></dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>3.2.9.RELEASE</version></dependency>
<!-- JDBC (可選) -->
<dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>3.2.9.RELEASE</version></dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>3.2.9.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId></dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId></dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId></dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId></dependency>
<!-- 無需聲明版本,BOM 自動統一 -->
</dependencies>
commons-logging,易與 SLF4J/Log4j2 衝突,建議排除並引入 jcl-over-slf4jcglib-nodep-2.1_3,若項目引入高版本 cglib 導致 ClassFormatError,需統一版本spring-hibernate.jar 已棄用,Hibernate 4+ 請直接使用 spring-orm + Hibernate 原生包spring-struts.jar 僅支持 Struts 1.x,現代項目請用 Struts 2 Convention PluginSpring 模塊化設計體現了「高內聚、低耦合」工程智慧。掌握 21 個 JAR 的功能邊界與依賴拓撲,能讓開發者像外科醫生一樣精準切除冗餘依賴,構建乾淨、穩定、可維護的依賴圖譜。建議團隊建立「依賴選型清單」,新項目啟動時按圖索驥,避免「全家桶式」引入導致的 JAR 地獄。