Spring的 jar 包只有20个左右,每个都有相应的功能,一个jar还可能依赖了若干其他 jar,下面是不同的工程种类要使用的 jar 包依赖

一、普通 java 工程使用 Spring 框架

<dependency>   
    <groupId>org.springframework</groupId>   
    <artifactId>spring-context</artifactId>   
    <version>3.2.17.RELEASE</version>  
 </dependency>

二、web 工程中引入 SpringMVC

<dependency>   
    <groupId>org.springframework</groupId>   
    <artifactId>spring-webmvc</artifactId>   
    <version>3.2.17.RELEASE</version>   
</dependency>

android 解决模块互相依赖 模块依赖关系图_spring

Spring 分为5个部分:Core、AOP、Data Access、Web、Test,图中每个圆角矩形都对应一个 jar。

在 Maven 中配置,所有这些 jar 的 “groupId” 都是 “org.springframework”,每个 jar 有一个不同的 “artifactId”

Spring4 去掉了 Spring3 的 struts,添加了 messagingwebsocket,其他模块保持不变,“instrumentation” 有两个 jar,还有一个 “spring-context-support” 图中没有列出,因此,Spring4 的 jar 有20个

jar 模块

作用

依赖于

spring-websocket

为web应用提供的高效通信工具

spring-core、spring-web

spring-context

spring-messaging

用于构建基于消息的应用程序

spring-core、spring-beans

spring-context


下面介绍这5个部分的 jar 以及依赖关系

【1】Core

Core 有4个模块:下图描述了他们之间的依赖关系 (左边的依赖右边的 jar)

jar 模块

作用

依赖于

spring-core

依赖注入 IoC 与 DI 的最基本实现,包含Spring 框架基本的核心工具类

commons-logging

spring-beans

Bean 工厂与 bean 的装配,

spring-core

spring-context

Spring 的 context 上下文

即 IoC 容器(核心接口 ApplicationContext)

spring-core、spring-beans

spring-aop、

spring-expression

spring-expression

Spring 表达式语言,${} 获取属性

spring-core

spring-core: springioc(依赖注入)的基础实现,所有应用都要用到的,它包含访问配置文件、创建和管理 bean 以及进行(ioc/di)操作相关的所有类。

但是这个是个基础实现,一般我们在实际的开发过程中很少直接用到,它是对起到支撑作用的。

因为 Spring-core —> commons-logging,其他模块都 —> Spring-core,

故整个 Spring 都 —> commons-logging,如果有自己的日志实现如 log4j,可以排除对 commons-logging 的依赖,没有日志实现而排除了commons-logging 依赖,编译报错


【2】AOP

jar 模块

作用

依赖于

spring-aop

提供使用Spring的AOP特性时所需的类

spring-core、spring-beansaopalliance

spring-aspects

集成 AspectJ

org.aspect > aspectjwerver

spring-instrument

提供一些类级的工具支持

和 ClassLoader 级的实现,

用于服务器

spring-instrument-tomcat

针对 tomcat 的 instrument 实现


【3】Data Access

Data Access 部分包含5个模块

jar 模块

作用

依赖于

spring-jdbc

Jdbc 的支持

spring-core、spring-beans

spring-tx

spring-tx

事务控制,事务的相关处理以及实现类就在这个jar包中

spring-core、spring-beans

spring-orm

对象关系映射,集成 ORM 框架 (hibernate,mybatis)

spring-core、spring-beans

spring-jdbc、spring-tx

spring-oxm

对象 xml 映射,对象与 xml 数据之间的相互转换

spring-core、spring-beans

spring-jms

java 消息服务

spring-core、spring-beans

spring-aop、spring-tx

spring-context


【3】Web

jar 模块

作用

依赖于

spring-web

基础 web 功能,如文件上传

spring-core、spring-beans

spring-aop、spring-context

spring-webmvc

mvc实现

spring-core、spring-beans

spring-web、spring-context

spring-expression

spring-webmvc-portlet

基于 portlet 的 mvc 实现

spring-webmvc、spring-core

spring-beans、spring-web

spring-context

spring-struts

与struts的集成,

不推荐,spring4不再提供



【4】Text

jar 模块

作用

依赖于

spring-test

对 junit 框架的简单封装。,

提供 junit 与 mock 测试功能

spring-core

spring-context-support

Spring 额外支持包,

比如邮件服务、视图解析等

spring-core、spring-beans

spring-context