一起归纳学习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核心框架体系结构
标签:Web,框架,spring,jar,模块,Spring,spring3,spring4 来源: https://blog.csdn.net/weixin_42670408/article/details/106919249