提交 c4a1b980 编写于 作者: 小傅哥's avatar 小傅哥

小傅哥,章节更新:第 4 章:崭露头角,基于Cglib实现含构造函数的类实例化策略

上级 1c6730e0
......@@ -21,3 +21,5 @@
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
*.md
......@@ -33,7 +33,7 @@
- [x] 第 1 章:[开篇介绍,我要带你撸 Spring 啦!](https://bugstack.cn/spring/2021/05/16/%E7%AC%AC1%E7%AB%A0-%E5%BC%80%E7%AF%87%E4%BB%8B%E7%BB%8D-%E6%89%8B%E5%86%99Spring%E8%83%BD%E7%BB%99%E4%BD%A0%E5%B8%A6%E6%9D%A5%E4%BB%80%E4%B9%88.html)
- [x] 第 2 章:[小试牛刀,实现一个简单的Bean容器](https://bugstack.cn/spring/2021/05/20/%E7%AC%AC2%E7%AB%A0-%E5%B0%8F%E8%AF%95%E7%89%9B%E5%88%80-%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AA%E7%AE%80%E5%8D%95%E7%9A%84Bean%E5%AE%B9%E5%99%A8.html)
- [x] 第 3 章:[初显身手,运用设计模式,实现 Bean 的定义、注册、获取](https://bugstack.cn/spring/2021/05/23/%E7%AC%AC3%E7%AB%A0-%E5%88%9D%E6%98%BE%E8%BA%AB%E6%89%8B-%E8%BF%90%E7%94%A8%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F-%E5%AE%9E%E7%8E%B0-Bean-%E7%9A%84%E5%AE%9A%E4%B9%89-%E6%B3%A8%E5%86%8C-%E8%8E%B7%E5%8F%96.html)
- [ ] 第 4 章:Spring Bean 构造函数实例化策略以及Cglib动态生成使用
- [x] 第 4 章:[崭露头角,基于Cglib实现含构造函数的类实例化策略](https://bugstack.cn/spring/2021/05/30/%E7%AC%AC4%E7%AB%A0-%E5%B4%AD%E9%9C%B2%E5%A4%B4%E8%A7%92-%E5%9F%BA%E4%BA%8ECglib%E5%AE%9E%E7%8E%B0%E5%90%AB%E6%9E%84%E9%80%A0%E5%87%BD%E6%95%B0%E7%9A%84%E7%B1%BB%E5%AE%9E%E4%BE%8B%E5%8C%96%E7%AD%96%E7%95%A5.html)
- [ ] 第 5 章:给 Bean 对象填充属性信息
- [ ] 第 6 章:待归档...
......@@ -42,7 +42,7 @@
| 1 | [开篇介绍,我要带你撸 Spring 啦!](https://bugstack.cn/spring/2021/05/16/%E7%AC%AC1%E7%AB%A0-%E5%BC%80%E7%AF%87%E4%BB%8B%E7%BB%8D-%E6%89%8B%E5%86%99Spring%E8%83%BD%E7%BB%99%E4%BD%A0%E5%B8%A6%E6%9D%A5%E4%BB%80%E4%B9%88.html) | [small-spring](https://github.com/fuzhengwei/small-spring) | [small-spring](https://gitee.com/fustack/small-spring) |
| 2 | [小试牛刀,实现一个简单的Bean容器](https://bugstack.cn/spring/2021/05/20/%E7%AC%AC2%E7%AB%A0-%E5%B0%8F%E8%AF%95%E7%89%9B%E5%88%80-%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AA%E7%AE%80%E5%8D%95%E7%9A%84Bean%E5%AE%B9%E5%99%A8.html) | [small-spring-step-01](https://github.com/small-spring/small-spring-step-01) | [small-spring-step-01](https://gitee.com/small-spring/small-spring-step-01) |
| 3 | [初显身手,运用设计模式,实现 Bean 的定义、注册、获取](https://bugstack.cn/spring/2021/05/23/%E7%AC%AC3%E7%AB%A0-%E5%88%9D%E6%98%BE%E8%BA%AB%E6%89%8B-%E8%BF%90%E7%94%A8%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F-%E5%AE%9E%E7%8E%B0-Bean-%E7%9A%84%E5%AE%9A%E4%B9%89-%E6%B3%A8%E5%86%8C-%E8%8E%B7%E5%8F%96.html) | [small-spring-step-02](https://github.com/small-spring/small-spring-step-02) | [small-spring-step-02](https://gitee.com/small-spring/small-spring-step-02) |
| 4 | Spring Bean 构造函数实例化策略以及Cglib动态生成使用 | [small-spring-step-03](https://github.com/small-spring/small-spring-step-03) | [small-spring-step-03](https://gitee.com/small-spring/small-spring-step-03) |
| 4 | [崭露头角,基于Cglib实现含构造函数的类实例化策略](https://bugstack.cn/spring/2021/05/30/%E7%AC%AC4%E7%AB%A0-%E5%B4%AD%E9%9C%B2%E5%A4%B4%E8%A7%92-%E5%9F%BA%E4%BA%8ECglib%E5%AE%9E%E7%8E%B0%E5%90%AB%E6%9E%84%E9%80%A0%E5%87%BD%E6%95%B0%E7%9A%84%E7%B1%BB%E5%AE%9E%E4%BE%8B%E5%8C%96%E7%AD%96%E7%95%A5.html) | [small-spring-step-03](https://github.com/small-spring/small-spring-step-03) | [small-spring-step-03](https://gitee.com/small-spring/small-spring-step-03) |
| 5 | 给 Bean 对象填充属性信息 | [small-spring-step-04](https://github.com/small-spring/small-spring-step-04) | [small-spring-step-04](https://gitee.com/small-spring/small-spring-step-04) |
| 6 | 待归档... | - | - |
......
# 《Spring 手撸专栏》第 1 章:开篇介绍,我要带你撸 Spring 啦!
作者:小傅哥
<br/>博客:[https://bugstack.cn](https://bugstack.cn)
> 沉淀、分享、成长,让自己和他人都能有所收获!😄
## 一、前言
`不正经!写写面经,去撸Spring源码啦🌶?`
是的,在写了4篇关于Spring核心源码的面经内容后,我决定要去手撸一个Spring了。为啥这么干呢?因为所有我想写的内容,都希望它是以理科思维理解为目的的学会,而不是靠着硬背记住。而目前面经中涉及到的每一篇Spring源码内容分析,在即使去掉部分非主流逻辑后,依然会显得非常庞大。*对有经验的老司机尚可阅读几遍接受,但就新人来讲只能放入收藏夹吃灰啦!*
[![](https://bugstack.cn/assets/images/spring/spring-1-01.png)](https://download.csdn.net/download/Yao__Shun__Yu/14932325)
可能已经阅读过 **2.5k下载量**[《Java面经手册》](https://download.csdn.net/download/Yao__Shun__Yu/14932325)的小伙伴会知晓,这是一本以面试题为入口讲解 Java 核心内容的技术书籍,书中内容极力的向你证实代码是对数学逻辑的具体实现。当你仔细阅读书籍时,会发现Java中有大量的数学知识,包括:扰动函数、负载因子、拉链寻址、开放寻址、斐波那契(Fibonacci)散列法还有黄金分割点的使用等等。
所以在编写面经手册关于 Spring 系列时,我也希望它是一项有益于程序员真正成长的技术资料和价值汇总,而不仅仅是对一些列繁杂内容的罗列。那么从借鉴 [tiny-spring]([https://github.com/code4craft/tiny-spring](https://github.com/code4craft/tiny-spring))、[mini-spring](https://github.com/fuzhengwei/small-spring) 以及对我对Spring的学习和常折腾开发中间件的经验上,来编写一款适合自己沉淀也满足于大家学习的Spring资料。
*傅哥的面经都是“假”的,一上来就学数学、撸源码、挖核心!* 好!既然你这么说,接下来我们定义`目标``计划`,开始撸`源码`
## 二、目标
![](https://bugstack.cn/assets/images/spring/spring-1-02.png)
本仓库以 Spring 源码学习为目的,通过带着读者一点点手写简化版 Spring 框架,了解 Spring 核心原理,为后续再深入学习 Spring 打下基础。
在手写的过程中会剔除 Spring 源码中繁杂的内容,摘取整体框架中的核心逻辑,简化代码实现过程,保留核心功能,例如:IOC、AOP、Bean生命周期、上下文、作用域、资源处理等内容实现。
所有的内容实现都会由简开始,一步步带着大家实现,最终所有的内容完成后,在提供一个相对完整的 small-spring,在这个过程中只要你能跟着走下来,那么最后你一定可以较容易的阅读 Spring 源码了。
## 三、计划
![](https://bugstack.cn/assets/images/spring/spring-1-03.png)
原定这周已经准备了 Spring AOP 筛选通知器的相关文章,源码已经撸好了。但发现这样发下去我估计阅读量是要劈叉,多数都进收藏夹。
写一篇文章最大的希望是与读者互动起来,不怕你提提意见,就怕你不给三连!所有读者给出的留言、评论、点赞、分享,都是下一篇文章的`120迈`动力的开始,所以这篇文章的源码撸完后,决定该把 Spring 整理整理了,不仅让我自己有一个学习的过程沉淀感,也让读者能真的学会这部分内容。*背,那是八股文,懂,才能涨姿势!*
讲道理,其实我也是一个乐于手撸源码的主,因为从源码的学习中我可以拿到一部分在业务系统开发过程中,不太可能接触到的技术内容。而这部分从源码中学到的技术内容又可以复用到业务系统开发中,例如我写过的很多中间件以及设计模式,都来自于对框架源码的内容的挖掘和运用。
`那 Spring 框架源码撸多少了?`
截止到目前为止,已经写好了四个章节的案例源码,主要包括:容器创建、Bean的定义和注册、构造实例、属性填充,因为最开始的内容比较简单,所以写起来也会比较快。目录结构如下,后续继续补充章节:
- [x] 第 1 章:开篇介绍,手写Spring能给你带来什么?
- [x] 第 2 章:Spring Bean 容器创建 | [small-spring-step-01](https://github.com/small-spring/small-spring-step-01)
- [x] 第 3 章:Spring Bean 的定义和注册 | [small-spring-step-02](https://github.com/small-spring/small-spring-step-02)
- [x] 第 4 章:Spring Bean 构造函数实例化策略以及Cglib动态生成使用 | [small-spring-step-03](https://github.com/small-spring/small-spring-step-03)
- [x] 第 5 章:给 Bean 对象填充属性信息 | [small-spring-step-04](https://github.com/small-spring/small-spring-step-04)
- [ ] 第 6 章:待归档...
站在我的角度撸源码要比写文章快,哪怕是非常简单的知识点,也要做既不繁杂冗余的介绍,也要能把知识的广度和深度讲清楚。所以在这个过程中我也会阅读不少资料以及官网上的文档,最终把相对那些符合当前章节有价值的内容,展示给读者学习,同时这也是个人对技术内容的一个积累。
## 四、源码
本章节是整个 `Spring 手撸`专栏的开篇,所以这里先把源码地址以及学习使用方式交代给读者,方便后续大家在后续可以顺利的学习到这部分内容。
![](https://bugstack.cn/assets/images/spring/spring-1-04.png)
- 源码目录:[https://github.com/fuzhengwei/small-spring](https://github.com/fuzhengwei/small-spring) - `汇总文章、源码、visio、xmind、ppt等包括创作过程中的整理内容,方便读者学习`
- 源码实现:[https://github.com/small-spring](https://github.com/small-spring) - `拆解实现步骤,搭建组织工程,展示每一个章节的具体源码实现过程,如果你愿意也可以参与到工程建设中`
## 五、总结
- 当你阅读 Spring 源码时你会看到各种的嵌套、递归、代理,以及可能连想调试时都不清楚断点要打在哪里,运行起来的程序跳来跳去。最终导致自己也就看不下去这份源码了!这是因为 Spring 发展的太久了,它为了满足不同的场景,已经做了太多的补充和优化,所以我们要做的是剥丝抽茧,体现核心,把最直接相干的内容体现出来进行学习,才更容易理解。
- 在源码学习的过程中,小傅哥会和你一起从最简单、最简单的Bean容器开始,可能有些时候某些章节内容并不会太多,不过我会帮你建立一些知识关联,尽可能让你在这个学习过程中,收获更多。
- 那么本章节关于 `Spring 手撸`专栏的开篇介绍就到这了,接下来你可以阅读到文章、获取到源码,直至我们把所有的内容全部完成,到时候就可以开发出一个相对完整的 Spring 框架了。希望在这个过程中你能和我一直坚持学习打卡!
## 六、系列推荐
- [《Java 面经手册》PDF,全书 417 页 11.5 万字,完稿&发版!](https://bugstack.cn/interview/2021/01/26/Java%E9%9D%A2%E7%BB%8F%E6%89%8B%E5%86%8CPDF%E4%B8%8B%E8%BD%BD.html)
- [Spring Bean IOC、AOP 循环依赖解读](https://bugstack.cn/interview/2021/05/05/面经手册-第31篇-Spring-Bean-IOC-AOP-循环依赖解读.html)
- [关于 Spring 中 getBean 的全流程源码解析](https://bugstack.cn/interview/2021/04/18/面经手册-第30篇-关于-Spring-中-getBean-的全流程源码解析.html)
- [Spring IOC 特性有哪些,不会读不懂源码!](https://bugstack.cn/interview/2021/04/07/面经手册-第29篇-Spring-IOC-特性有哪些-不会读不懂源码.html)
- [你说,怎么把Bean塞到Spring容器?](https://bugstack.cn/interview/2021/03/30/面经手册-第28篇-你说-怎么把Bean塞到Spring容器.html)
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册