从头开始实现一个Spring框架
2020-10-16
2分钟阅读时长
SpringBoot基本已经成为Java开发的默认选项,无脑选择使用在业务开发中,稳定可靠,扩展灵活,但是我之前的文章中已经解析过Spring的源码解析。但是从源码角度来分析这个事,客观感受还是有点飘,不能上手实践能学到的东西毕竟有限,可能概念性的、轮廓性的东西可以把握一二,但是如果具体实现细节深扣下来,可能就亿脸懵逼了。所以,我才准备开这个专栏,目的就是是实现一个类Spring的框架功能,让你深刻理解Spring自己实现出来,该做哪些设计,该如何思考框架结构,基础类,扩展类该如何实现,要提供出哪些方法,要使用哪些设计模式把上面所提到的东西攒起来,让它跑起来。
基于我的思考,我觉得想自己手撸Spring,要在以下几方面做思考:
-
- 在动手之前,你要仔细考虑开发出这个框架需要满足哪些需求,并且要让在架构阶段,做结构设计的时候,要把这些涉及的需求点都全方位覆盖;
-
- 先实现基本功能:诸如依赖注入、AOP等基本功能,因为它是Spring框架的核心部分,所以我们实现的时候,也要重点把这部分实现出来
-
- 要深扣一下Java的反射机制,因为它可以帮助检查和操作运行时对象。理解反射机制这里,基本就是Java创建自定义框架的关键了,因为它可以使你轻松对框架做扩展并定制你的代码;
-
- 处理配置文件部分:因为我们知道Spring会使用XML或注解方式来配置组件。所以我们也要实现出配置文件支持的格式以及要编写代码来支持解析这些配置文件;
-
- 要模拟实现出类似于Bean的生命周期,基于Spring,所以我们也要让我们开发出的框架可以支持Bean的生命周期。学习并实现BeanPostProcessor接口,以实现在创建和销毁Bean时执行自定义的操作;
-
- 编写测试用例:编写单元测试用例可以快速确定框架是否按预期工作。编写针对于依赖注入、AOP等基本功能的测试用例,并确保这些用像可以成功运行;
这只是个梗概,具体实现的时候可能有所出入,但是大方向基本就涉及到这些东西,手撸实现出一个Spring,这些点一定都要涵盖掉。
那好,让我们在专栏的分章节中再见!