【Spring源码】第二步:了解Spring的项目架构

Spring项目模块

下了源码一看,我去(我其实没有那么惊讶毕竟功能强大,多也正常),Spring 居然有这么多的模块划分,但是这些模块都是做什么的,可能我们平常观察项目集成的时候,能够感受一些东西出来。比如:spring-webSpringMVC 的内容。所以在日常中,把 SpringMVC 当成一个独立框架是一个很有问题的说法,他其实也就是 Spring 家族中的一个小模块而已。除了这个模块比较常见,我们还使用了 AOP Transction 这些模块,因为很多时候,在框架的集成中,已经依赖好了这些中间对接模块,但是他其实存在于每一个基本的 web 项目中。 我一直很喜欢 Spring 提供的说明书:说明书链接 这个说明书开头就已经把所有模块,做什么事情的都总结好了,需要用到哪个模块的说明,进入对应的链接就好了:

image-20191202151902551

简单说说:

  1. 总览:介绍 Spring 的背景故事;
  2. Core核心模块Spring 的核心是什么,就是 容器+AOP。一切的事情都是基于这两个模块而来,现有容器,容器装着我们定义的 Bean 配置,然后再是 AOPAOP 可以增强很多额外的功能,比如 spring-cache 缓存。然而这里的介绍还包含了事件通知、资源管理、i18n、数据校验、数据绑定以及类型转变;
  3. Testing测试模块:我们公司倒是很少写测试用例,然而这个模块包含了一系列的测试模块,包括 Mock数据、测试的Spring上下文、SpringMVC 的测试等等;
  4. DataAccess数据访问模块:包含了数据库事务,Dao层 的支持,也就是常见的 MyBatis 整合 Spring 需要用到的一些接口,还有 jdbcTemplate
  5. WebServlet 和 WebReactive:包含有新版才有的 WebFlux 模块还有他的客户端,我们常见的 SpringMVCWebSocket
  6. Integration集成模块:这个模块可能用的不是很多?有远程调用过时的 JMS 技术,Email,任务,调度以及缓存模块;
  7. Language 就不用说啦,支持的编程语言。

spring-core项目

有点报错,但是不影响运行呀~ 为啥这个模块要在这里说,因为这个模块是最基础的一个,基本 Spring 所有的子模块都以来这个项目,那么他有什么用,因为他是一个工具人工具模块,比如这个 StringUtils

还有个点,他的 utils 都是抽象类的(防止实例化),提供静态方法使用。在日常业务搬砖中,也可以直接使用这些工具类,节省了很多依赖包。 好了,可以开始进入源码的阶段了,这篇稍稍短点,但是那时候知道文档地址的时候简直如获珍宝,一切我们所需要的东西都可以在这里找到。