乐趣区

关于java:Spring-手撸专栏-开篇介绍我要带新人撸-Spring-啦

作者:小傅哥
博客:https://bugstack.cn

积淀、分享、成长,让本人和别人都能有所播种!😄

一、前言

不正经!写写面经,去撸 Spring 源码啦🌶?

是的,在写了 4 篇对于 Spring 外围源码的面经内容后,我决定要去手撸一个 Spring 了。为啥这么干呢?因为所有我想写的内容,都心愿它是以文科思维了解为目标的学会,而不是靠着硬背记住。而目前面经中波及到的每一篇 Spring 源码内容分析,在即便去掉局部非主流逻辑后,仍然会显得十分宏大。对有教训的老司机尚可浏览几遍承受,但就新人来讲只能放入收藏夹吃灰啦!

可能曾经浏览过 2.5k 下载量 的《Java 面经手册》的小伙伴会通晓,这是一本以面试题为入口解说 Java 核心内容的技术书籍,书中内容竭力的向你证实代码是对数学逻辑的具体实现。当你仔细阅读书籍时,会发现 Java 中有大量的数学知识,包含:扰动函数、负载因子、拉链寻址、凋谢寻址、斐波那契(Fibonacci)散列法还有黄金分割点的应用等等。

所以在编写面经手册对于 Spring 系列时,我也心愿它是一项有益于程序员真正成长的技术材料和价值汇总,而不仅仅是对一些列繁冗内容的列举。那么从借鉴 tiny-spring)、mini-spring 以及对我对 Spring 的学习和常折腾开发中间件的教训上,来编写一款适宜本人积淀也满足于大家学习的 Spring 材料。

傅哥的面经都是”假“的,一上来就学数学、撸源码、挖外围! 好!既然你这么说,接下来咱们定义 指标 打算 ,开始撸 源码

二、指标

本仓库以 Spring 源码学习为目标,通过带着读者一点点手写简化版 Spring 框架,理解 Spring 外围原理,为后续再深刻学习 Spring 打下基础。

在手写的过程中会剔除 Spring 源码中繁冗的内容,摘取整体框架中的外围逻辑,简化代码实现过程,保留外围性能,例如:IOC、AOP、Bean 生命周期、上下文、作用域、资源解决等内容实现。

所有的内容实现都会由简开始,一步步带着大家实现,最终所有的内容实现后,在提供一个绝对残缺的 small-spring,在这个过程中只有你能跟着走下来,那么最初你肯定能够较容易的浏览 Spring 源码了。

三、打算

原定这周曾经筹备了 Spring AOP 筛选告诉器的相干文章,源码曾经撸好了。但发现这样发下去我预计浏览量是要劈叉,少数都进收藏夹。

写一篇文章最大的心愿是与读者互动起来,不怕你提提意见,就怕你不给三连!所有读者给出的留言、评论、点赞、分享,都是下一篇文章的 120 迈 能源的开始,所以这篇文章的源码撸完后,决定该把 Spring 整顿整顿了,不仅让我本人有一个学习的过程积淀感,也让读者能真的学会这部分内容。背,那是八股文,懂,能力涨姿态!

讲道理,其实我也是一个乐于手撸源码的主,因为从源码的学习中我能够拿到一部分在业务零碎开发过程中,不太可能接触到的技术内容。而这部分从源码中学到的技术内容又能够复用到业务零碎开发中,例如我写过的很多中间件以及设计模式,都来自于对框架源码的内容的开掘和使用。

那 Spring 框架源码撸多少了?

截止到目前为止,曾经写好了四个章节的案例源码,次要包含:容器创立、Bean 的定义和注册、结构实例、属性填充,因为最开始的内容比较简单,所以写起来也会比拟快。目录构造如下,后续持续补充章节:

  • [x] 第 1 章:开篇介绍,手写 Spring 能给你带来什么?
  • [x] 第 2 章:Spring Bean 容器创立 | small-spring-step-01
  • [x] 第 3 章:Spring Bean 的定义和注册 | small-spring-step-02
  • [x] 第 4 章:Spring Bean 构造函数实例化策略以及 Cglib 动静生成应用 | small-spring-step-03
  • [x] 第 5 章:给 Bean 对象填充属性信息 | small-spring-step-04
  • [] 第 6 章:待归档 …

站在我的角度撸源码要比写文章快,哪怕是非常简单的知识点,也要做既不繁冗冗余的介绍,也要能把常识的广度和深度讲清楚。所以在这个过程中我也会浏览不少材料以及官网上的文档,最终把绝对那些合乎以后章节有价值的内容,展现给读者学习,同时这也是集体对技术内容的一个积攒。

四、源码

本章节是整个 Spring 手撸 专栏的开篇,所以这里先把源码地址以及学习应用形式交代给读者,不便后续大家在后续能够顺利的学习到这部分内容。

  • 源码目录:https://github.com/fuzhengwei/small-spring – 汇总文章、源码、visio、xmind、ppt 等包含创作过程中的整顿内容,不便读者学习
  • 源码实现:https://github.com/small-spring – 拆解实现步骤,搭建组织工程,展现每一个章节的具体源码实现过程,如果你违心也能够参加到工程建设中

五、总结

  • 当你浏览 Spring 源码时你会看到各种的嵌套、递归、代理,以及可能连想调试时都不分明断点要打在哪里,运行起来的程序跳来跳去。最终导致本人也就看不下去这份源码了!这是因为 Spring 倒退的太久了,它为了满足不同的场景,曾经做了太多的补充和优化,所以咱们要做的是剥丝抽茧,体现外围,把最间接相干的内容体现进去进行学习,才更容易了解。
  • 在源码学习的过程中,小傅哥会和你一起从最简略、最简略的 Bean 容器开始,可能有些时候某些章节内容并不会太多,不过我会帮你建设一些常识关联,尽可能让你在这个学习过程中,播种更多。
  • 那么本章节对于 Spring 手撸 专栏的开篇介绍就到这了,接下来你能够浏览到文章、获取到源码,直至咱们把所有的内容全副实现,到时候就能够开发出一个绝对残缺的 Spring 框架了。心愿在这个过程中你能和我始终保持学习打卡!

六、系列举荐

  • 《Java 面经手册》PDF,全书 417 页 11.5 万字,完稿 & 发版!
  • Spring Bean IOC、AOP 循环依赖解读
  • 对于 Spring 中 getBean 的全流程源码解析
  • Spring IOC 个性有哪些,不会读不懂源码!
  • 你说,怎么把 Bean 塞到 Spring 容器?
退出移动版