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>
Spring 分为5个部分:Core、AOP、Data Access、Web、Test,图中每个圆角矩形都对应一个 jar。
在 Maven 中配置,所有这些 jar 的 “groupId” 都是 “org.springframework”,每个 jar 有一个不同的 “artifactId”
Spring4 去掉了 Spring3 的 struts,添加了 messaging 和 websocket,其他模块保持不变,“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 |