【Spring源码这样读】-认识Spring的基本功能

227 阅读3分钟

读源码之前我们不妨去熟悉一下框架到底有哪些功能点,然后在根据功能点去提问,更有助于我们去读源码。比较熟练使用框架的大佬可以跳过,这里算是回顾一下技术

  • 参考书籍 《Spring源码深度解读》

在这里插入图片描述

Spring整体架构图

spring总共有20几个模块,包含的功能非常多,如果我们贸然的入手某一个功能,只会凌乱在庞大的代码量中。所以我们不妨拔高切入点,直接从架构图入手。(该图出自:spring 4.3.27的doc 2.2章节,最新的5.3.4并没有)

在这里插入图片描述

架构图中模块的作用

Core Container(核心容器)
该模块是Spring的核心模块,包含了我们平常能够用到的很多的核心工具类。它包含有Core、Beans、Context和Expression Language模块。Core和Beans模块是框架的基础部分,提供IoC(反转控制)和依赖注入特性。这里的基础概念是BeanFactory,它对Factory模式的金典实现来消除对程序性单利模式的需要,并真正地允许你从程序逻辑中分离出依赖关系和配置。 - Core 模块主要包含Spring框架基本的核心工具类,Spring的其他组件都需要使用这个包里的类。 - Beans模块是所有应用都要用到的,它包含访问配置文件,创建和管理bean以及进行控制反转、依赖注入操作相关的所有类。 - Context模块构建于Core和Beans基础之上 ,提供了一种类似JNDI注册器的框架式的对象访问方法,Context继承了Beans的特性,为Spring核心提供了大量扩展,追加了对国际化、事件传播、资源加载和对Context的透明创建支持。 - Expression Language模块提供了一个强大的表达式语言用于在运行时查询和操作对象。
Data Access/Integration(数据访问/集成)
数据访问/集成层包括 JDBC、ORM、OXM、JMS 和 Transactions 模块,具体介绍如下。 - JDBC 模块(这一模块对于开发人原来说应该是再熟悉不过了):提供了一个 JDBC 的抽象层,大幅度减少了在开发过程中对数据库操作的编码。 - ORM 模块:对流行的对象关系映射 API,包括 JPA、JDO、Hibernate 和 iBatis 提供了的集成层。 - OXM 模块:提供了一个支持对象/XML 映射的抽象层实现,如 JAXB、Castor、XMLBeans、JiBX 和 XStream。 - JMS 模块:指 Java 消息服务,包含的功能为生产和消费的信息。 - Transactions 事务模块:支持编程和声明式事务管理实现特殊接口类,并为所有的 POJO。
Web
Spring 的 Web 层包括 Web、Servlet、Struts 和 Portlet 组件,具体介绍如下。 - Web 模块:提供了基本的 Web 开发集成特性,例如多文件上传功能、使用的 Servlet 监听器的 IoC 容器初始化以及 Web 应用上下文。 - Servlet模块:包括 Spring 模型—视图—控制器(MVC)实现 Web 应用程序。 - Struts 模块:包含支持类内的 Spring 应用程序,集成了经典的 Struts Web 层。 - Portlet 模块:提供了在 Portlet 环境中使用 MV C实现,类似 Web-Servlet 模块的功能。
AOP
AOP 模块:提供了面向切面编程实现,允许定义方法拦截器和切入点,将代码按照功能进行分离,以降低耦合性。
Aspects
Aspects 模块:提供与 AspectJ 的集成,是一个功能强大且成熟的面向切面编程(AOP)框架。
Instrumentation
Instrumentation 模块:提供了类工具的支持和类加载器的实现,可以在特定的应用服务器中使用。
Messaging
Messaging模块为集成messaging api和消息协议提供支持。
Test
Test 模块:支持 Spring 组件,使用 JUnit 或 TestNG 框架的测试。