文章有参看其他博主文章:

  • https://www.cnblogs.com/warehouse/p/9372260.html
  • https://www.cnblogs.com/jpwz/p/10556012.html
  • https://blog.csdn.net/u014676895/article/details/89669924

Spring框架是一个分层架构,他包含一系列的功能要素,并被分为大约20个模块,如下图所示(以Spring 4版本为基础,Spring5基本也符合)
Spring框架结构解读

各部分说明:

1.核心容器(Core Container)

包含Beans、Core、Context、SPEL(Spring Expression Languager)模块。

  • Beans模块是所有应用都要用到的,它包含访问配置文件、创建和管理Bean以及进行Inversion of Control/Dependency Injection(IoC/DI)操作相关的所有类

  • Core模块主要包含Spring框架基本的核心工具类,Spring的其他组件都要使用到这个包里的类,Core模块是其他组件的基本核心

  • Context模块构建于Core和Beans模块基础之上,提供了一种类似于JNDI注册器的框架式的对象访问方法。Context模块继承了Beans的特性,为Spring核心提供了大量扩展,添加了对国际化(例如资源绑定)、事件传播、资源加载和对Context的透明创建的支持。Context同时也支持J2EE的一些特性,例如EJB、JMX和基础的远程处理。ApplicationContext接口是Context模块的关键。

  • Expression Language 模块提供了一个强大的表达式语言用于在运行时查询和操纵对象。它是JSP2.1规范中定义的unifed expression language的一个扩展。该语言支持设置/获取属性的值,属性的分配,方法的调用,访问数组上下文(accession the context of arrays),容器和索引器,逻辑和算数运算符,命名变量以及从Spring的IoC容器中根据名称检索对象。它也支持list投影,选择和一般的list聚合。

2.数据访问/集成(Data Access/Integration)

Data Access/Integration(数据访问/集成)层包含有JDBC、ORM、OXM、JMS和Transaction模块

  • DBC模块提供了一个JDBC抽象层,它可以消除冗长的JDBC编码和解析数据库厂商特有的错误代码。这个模块包含了Spring对JDBC数据访问进行封装的所有类
  • ORM(Object Relational Mapping对象关系映射)模块为流行的对象-关系映射API,如JPA、JDO、Hibernate、iBatis等,提供了一个交互层。
  • OXM模块提供了一个对Object/XML映射实现的抽象层,Object/XML映射实现包括JAXB、Castor、XMLBeans、JiBX和XStream。
  • Spring-jms模块(Java Messaging Service):指Java消息传递服务,包含用于生产和使用消息的功能。自Spring4.1以后,提供了与Spring-messaging模块的集成。
  • Transaction模块支持编程和声明性的事务管理,这些事务类必须实现特定的接口,并且对所有的POJO都适用。
3.Web模块

Web上下文模块建立在应用程序上下文模块之上,为基于Web的应用程序提供了上下文。Web模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。Web层包含了Web、Web-Servlet、Web-Socket和Web-Porlet模块

  • Web模块提供了基础的面向Web的集成特性。例如,多文件上传,使用servlet listeners初始化IoC容器以及一个面向Web的应用上下文。它还包含Spring远程支持中Web的相关部分。

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

  • Spring-websocket模块:Spring4.0以后新增的模块,它提供了WebSocket和SocketJS的实现。

  • Portlet模块:类似于Servlet模块的功能,提供了Portlet环境下的MVC实现。

4.Test模块

Test模块支持使用JUnit和TestNG对Spring组件进行测试。这里不在做过多说明

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

Spring4.0以后新增了消息(Spring-messaging)模块,该模块提供了对消息传递体系结构和协议的支持

相关文章: