一起归纳学习Spring-- (2)Spring核心框架体系结构及组件,包含spring3与spring4

描述

很多人都在用spring开发java项目,但是配置maven依赖的时候并不能明确要配置哪些spring的jar包。那是因为对Spring的框架体系结构和各包的作用不够了解

举个例子

要在java工程使用spring框架,需要哪些jar呢?只要一个

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

要在web工程中引入spring mvc呢?也只要配置一个依赖

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

spring大概有20个左右的jar包,随着spring框架的升级改版,jar数量可能还会增加,jar包之间还存在依赖关系,要想配置Maven依赖,就要理清jar包之间的依赖关系,由此引申出今天要学习的内容:Spring核心框架体系结构及各个包的作用

学习Spring3框架的体系机构

Spring3框架体系结构图

在这里插入图片描述
图中将Spring3主要分为5大模块:核心容器模块(Core Contaioner)、数据访问/集成模块(Data Access/Integration)、Web层(Web)、面向切面编程模块(AOP)、测试模块(Test)。如图所示,图中每个圆角矩形都对应一个jar包,其中Instrumentation有两个jar包。核心容器模块中,spring额外支持包“spring-context-support”未列出,spring3框架总共有19个jar包。

核心容器(Core Contaioner)

Spring的核心容器是其他模块建立的基础,有spring-core、spring-beans、spring-context、spring-context-support和spring-expression等模块组成。

  • spring-core:提供了框架的基本组成成分,包括控制反转(IOC)和依赖注入(DI)功能。
  • spring-beans:提供了BeanFactory,是工厂模式的一个经典实现。实现了Bean的装配。
  • spring-context:建立在Core和Beans模块的基础之上,提供一个框架式的对象访问方式,是访问定义和配置的任何对象的媒介。
  • spring-context-support:支持整合第三方库到Spring应用程序上下文,特别是用于高速缓存(EhCache、JCache)和任务调度(CommonJ、Quartz)的支持。
  • spring-expression:提供了强大的表达式语言去支持运行时查询和操作对象图。

他们之间的依赖关系,如图:
在这里插入图片描述
因为spring-core依赖了commons-logging,而其他模块都依赖了spring-core,所以整个spring框架都依赖了commons-logging,如果有自己的日志实现如log4j,可以排除对commons-logging的依赖,没有日志实现而排除了commons-logging依赖,编译报错。

数据访问/集成模块(Data Access/Integration)

数据访问/集成层由JDBC、ORM、OXM、JMS和事务模块组成。

  • spring-jdbc:提供了一个JDBC的抽象层,消除了烦琐的JDBC编码和数据库厂商特有的错误代码解析。

  • spring-orm:为流行的对象关系映射(Object-Relational Mapping)API提供集成层,包括JPA和Hibernate。使用spring-orm模块可以将这些O/R映射框架与spring提供的所有其他功能结合使用,例如声明式事务管理功能。

  • spring-oxm:提供了一个支持对象/XML映射的抽象层实现,例如JAXB、Castor、JiBX和XStream。

  • spring-jms:指Java消息传递服务(Java Messaging Service),包含用于生产和使用消息的功能。自Spring4.1以后,提供了与Spring-messaging模块的集成。

  • spring-tx:支持用于实现特殊接口和所有POJO(普通Java对象)类的编程和声明式事务管理。

他们之间的依赖关系,如图:
在这里插入图片描述

Web层(Web)

Web层由spring-web、spring-webmvc、spring-webmvc-portlet和spring-struts模块组成。

  • spring-web:提供了基本的Web开发集成功能,例如多文件上传功能、使用Servlet监听器初始化一个IOC容器以及Web应用上下文。

  • spring-webmvc:也称为Web-Servlet模块,包含用于web应用程序的Spring MVC和REST Web Services实现。Spring MVC框架提供了领域模型代码和Web表单之间的清晰分离,并与Spring Framework的所有其他功能集成。

  • spring-webmvc-portlet:基于portlet的mvc实现。

  • spring-struts:与struts的集成,不推荐,spring4不再提供。

他们之间的依赖关系,如图:
在这里插入图片描述

面向切面编程模块(AOP和Instrumentation)

  • spring-aop:提供了一个符合AOP要求的面向切面的编程实现,允许定义方法拦截器和切入点,将代码按照功能进行分离,以便干净地解耦。
  • spring-aspects:提供了与AspectJ的集成功能,AspectJ是一个功能强大且成熟的AOP框架。
  • spring-instrumentation:提供了类植入(Instrumentation)的工具支持和类加载器(ClassLoader)的实现,可以在特定的应用服务器中使用。
  • spring-instrumentation-tomcat:针对tomcat的instrument实现

他们之间的依赖关系,如图:
在这里插入图片描述

测试模块(Test)

  • spring-test:支持使用JUnit或TestNG对Spring组件进行单元测试和集成测试。

依赖关系,如图:
在这里插入图片描述

Spring4框架的体系机构

spring4,与spring3结构基本相同,下面是官网给出的结构图
在这里插入图片描述
比较spring3的体系结构图,spring4去掉了spring3中的struts模块,添加了messaging模块和websocket模块,其他模块保持不变。spring的jar包有20个。

  • spring-websocket:为web应用提供的高效的websocket通信工具
  • spring-messaging:消息模块,该模块提供了对消息传递体系结构和协议的支持。用于构建基于消息的应用程序。

引用:
Spring的体系结构详解
Spring核心框架体系结构

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值