Spring源码第一章增加两张流程图

This commit is contained in:
youthlql
2021-12-18 17:08:37 +08:00
parent a1b6b2cfce
commit 0805799bd0

View File

@@ -334,6 +334,10 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto
### 注册BeanDefinition-1
#### 流程图-BeanDefinition注册流程
<img src="https://unpkg.zhimg.com/youthlql@1.0.7/spring-sourcecode-v1/flow_chart/Spring%E6%BA%90%E7%A0%81-BeanDefinition%E6%B3%A8%E5%86%8C%E6%B5%81%E7%A8%8B.png">
- 我们要看BeanDefinition是何时被放入到beanDefinitionMap只需要在DefaultListableBeanFactory用到`beanDefinitionMap.put()`的地方打个断点。
- 我们在DefaultListableBeanFactory里搜索发现了registerBeanDefinition注册Bean定义信息这个方法名很像我们要找的东西再看里面的代码果然有`beanDefinitionMap.put()`这串代码,我们试着在这里打个断点
- 然后启动下面的测试类
@@ -973,6 +977,10 @@ public interface Aware {
#### 创建Person对象
##### 流程图-Bean对象创建流程
<img src="https://unpkg.zhimg.com/youthlql@1.0.7/spring-sourcecode-v1/flow_chart/Spring%E6%BA%90%E7%A0%81-Bean%E5%AF%B9%E8%B1%A1%E5%88%9B%E5%BB%BA%E6%B5%81%E7%A8%8B.png">
##### Debug调用栈
为了知道Aware的原理我们给上面的pos_1和pos_2位置打上断点看下是怎么进来的
@@ -1165,7 +1173,7 @@ public class MainConfig {
synchronized (this.singletonObjects) {
// ...
try {
// 通过getObject获取真正的对象有点类似于FactoryBean这个不懂的建议先了解下Spring基本欧诺个发
// 通过getObject获取真正的对象有点类似于FactoryBean这个不懂的建议先了解下Spring基本用法
// ObjectFactory类注释有说明。
singletonObject = singletonFactory.getObject();
newSingleton = true;