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

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

有点报错,但是不影响运行呀~ 为啥这个模块要在这里说,因为这个模块是最基础的一个,基本 Spring 所有的子模块都以来这个项目,那么他有什么用,因为他是一个工具人工具模块,比如这个 StringUtils:
还有个点,他的 utils 都是抽象类的(防止实例化),提供静态方法使用。在日常业务搬砖中,也可以直接使用这些工具类,节省了很多依赖包。 好了,可以开始进入源码的阶段了,这篇稍稍短点,但是那时候知道文档地址的时候简直如获珍宝,一切我们所需要的东西都可以在这里找到。