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