首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Spring 3.2.9 JAR 包全解析:21 個模塊功能與依賴關係圖譜

     編輯:Java 綜合教學

前言

Spring 框架採用高度模塊化設計,3.2.9 版本包含 21 個獨立 JAR 包。理解每個模塊的功能定位與依賴關係,是精準構建項目依賴、避免 JAR 衝突、優化構建體積的關鍵。本文逐一解析所有模塊,並提供完整依賴拓撲圖。

一、21 個核心模塊詳細功能表

JAR 包名稱核心功能定位典型應用場景
spring-aop-3.2.9.RELEASE.jarAOP 實現核心,含代理創建、切點解析、攔截器鏈聲明式事務、日誌攔截、性能監控、安全檢查
spring-aspects-3.2.9.RELEASE.jar整合 AspectJ,提供 @AspectJ 註解支持與 LTW(負載時編織)使用 AspectJ 語法、跨切面複用、域對象依賴注入
spring-beans-3.2.9.RELEASE.jarIoC 容器核心: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.jarContext 擴展支持:EhCache、JCA、JMX、JavaMail、Quartz、Timer第三方技術集成(郵件、調度、緩存、管理)
spring-core-3.2.9.RELEASE.jar核心工具類:資源訪問、異常體系、工具類、日誌適配所有模塊基礎依賴,項目必引
spring-expression-3.2.9.RELEASE.jarSpEL 表達式語言:屬性訪問、方法調用、集合操作、邏輯運算@Value 注解、XML 配置動態值、條件化 Bean 定義
spring-framework-bom-3.2.9.RELEASE.jarMaven BOM(物料清單),統一版本管理依賴版本鎖定,避免傳遞依賴版本衝突
spring-instrument-3.2.9.RELEASE.jarJVM 代理儀表,支持類文件轉換(如 LTW)生產環境熱部署、性能分析、AOP 織入
spring-instrument-tomcat-3.2.9.RELEASE.jarTomcat 專用儀表實現,支持 Tomcat 類加載器織入Tomcat 環境下 LTW、應用隔離織入
spring-jdbc-3.2.9.RELEASE.jarJDBC 模板化:JdbcTemplate、SimpleJdbcInsert、NamedParameterJdbcTemplate、異常轉換簡化 JDBC 操作、統一異常處理、事務管理基礎
spring-jms-3.2.9.RELEASE.jarJMS 1.0.2/1.1 支持:消息發送/接收、监聽容器、事務會話異步消息、解耦系統、異步任務處理
spring-orm-3.2.9.RELEASE.jarORM 整合:Hibernate、JPA、iBATIS、JDO、TopLink/OJB(Hibernate 4+ 獨立包)持久層框架整合、Session/EntityManager 管理
spring-oxm-3.2.9.RELEASE.jarObject/XML 映射:JAXB、Castor、XMLBeans、JiBX、XStreamXML 配置、Web Service、報文轉換
spring-struts-3.2.9.RELEASE.jarStruts 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.jarWeb 基礎:WebApplicationContext、MultipartResolver、Filter、JSF/Struts 整合Web 應用啟動、文件上傳、上下文加載
spring-webmvc-3.2.9.RELEASE.jarSpring MVC 核心:DispatcherController、HandlerMapping、ViewResolver、國際化、主題、標簽庫構建 REST API、傳統 MVC Web 應用
spring-webmvc-portlet-3.2.9.RELEASE.jarPortlet 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

關鍵依賴洞察

  • spring-core:全圖根節點,所有模塊直接/間接依賴
  • spring-beans:IoC 核心,被 AOP、Context、Web 等上層依賴
  • spring-aop:依賴 cglib(代理生成)和 aopalliance(接口標準)
  • spring-context:匯聚 Core+Beans+AOP,企業級功能總匯
  • spring-webmvc:依賴鏈最長,包含 Web 全棧能力
  • cglib-nodep-2.1_3.jar:關鍵第三方依賴,用於動態代理字節碼生成
  • aopalliance.jar:AOP 標準接口定義,解耦 Spring 與具體 AOP 實現

三、實戰依賴選型指南

1. 最小化 Web MVC 項目

<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>

2. 使用 BOM 統一版本(推薦)

<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>

四、避坑指南

  • 傳遞依賴衝突:Spring 3.x 依賴 commons-logging,易與 SLF4J/Log4j2 衝突,建議排除並引入 jcl-over-slf4j
  • cglib 版本陷阱:Spring 3.2.9 內置 cglib-nodep-2.1_3,若項目引入高版本 cglib 導致 ClassFormatError,需統一版本
  • Hibernate 整合包過時:spring-hibernate.jar 已棄用,Hibernate 4+ 請直接使用 spring-orm + Hibernate 原生包
  • Struts 1 別用了:spring-struts.jar 僅支持 Struts 1.x,現代項目請用 Struts 2 Convention Plugin

五、結語

Spring 模塊化設計體現了「高內聚、低耦合」工程智慧。掌握 21 個 JAR 的功能邊界與依賴拓撲,能讓開發者像外科醫生一樣精準切除冗餘依賴,構建乾淨、穩定、可維護的依賴圖譜。建議團隊建立「依賴選型清單」,新項目啟動時按圖索驥,避免「全家桶式」引入導致的 JAR 地獄。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved