这是我参与8月更文挑战的第二天,活动详情查看:8月更文挑战
前言
为什么要有这个解析的大纲呢,因为这样有计划的进行解析思路更加的清新,有一个明确的概念
总体熟悉
对spring framework项目有一个总体的了解,并且知道每个模块的作用,那么如何快速上手一个项目呢,核心思想:理解 + 猜测。有两种方法,第一就是根据功能(问题)点进行debug跟踪,这是以功能(问题)点为导向,从而达到熟悉的目的。第二种就是每个功能进行一一解读,虽然很枯燥,但是能够达到较好的一个效果。这里笔者采用的是第二种方式进行解析。
模块熟悉
spring framework项目模块如下
- buildSrc // 编译文件模块
- ci // 进行CI构建模块(spring的)
- framework-bom // jar包统一管理
- integration-test // 集成测试模块
- spring-aop // aop模块
- spring-aspects // aspects模块
- spring-beans // beans
- spring-context // 上下文
- spring-context-indexer // 上下文 indexer
- spring-context-support // 上下文支持
- spring-core // 主要的功能模块
- spring-expression // 表达式模块
- spring-instrument // 类植入和类加载器模块
- spring-jcl // 日志模块
- spring-jdbc // 数据库驱动集成
- spring-jms // jms 集成
- spring-messaging // 消息模块
- spring-orm // orm框架模块
- spring-oxm // Object与Xml的转换
- spring-r2dbc // 非阻塞API操作数据库
- spring-test // spring test模块
- spring-tx // 事物模块
- spring-web // servlet容器封装模块
- spring-webflux // webflux 集成模块
- spring-webmvc // mvc 封装模块
- spring-websocket // websocket 集成模块
这么多的模块那么应该从哪个模块开始?,笔者采用的是自上而下的方式进行解析,换句话说就是找到所有模块中最顶级的模块,从最顶级开始解析。如何找到最顶级的模块或者最顶级的定义是什么?笔者认为,一个项目的最顶级模块的定义:排除第三方引用的包后,未引用其他模块,并且被其他模块所引用的模块,这样的称之为顶级模块。 另一方面排除打包构建的模块如 buildStr ci framework-bom等模块
总结
对该项目进行解析完成后,总结有无值得我们平时功能当中可以学习的设计思想和编程思想,以及功能点对应的应用的场景有哪些。