mirror of
https://github.com/youthlql/JavaYouth.git
synced 2026-03-13 21:33:42 +08:00
Spring源码第一章增加两张流程图
This commit is contained in:
@@ -334,6 +334,10 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto
|
|||||||
|
|
||||||
### 注册BeanDefinition-1
|
### 注册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()`的地方打个断点。
|
- 我们要看BeanDefinition是何时被放入到beanDefinitionMap,只需要在DefaultListableBeanFactory用到`beanDefinitionMap.put()`的地方打个断点。
|
||||||
- 我们在DefaultListableBeanFactory里搜索,发现了registerBeanDefinition(注册Bean定义信息)这个方法名很像我们要找的东西,再看里面的代码,果然有`beanDefinitionMap.put()`这串代码,我们试着在这里打个断点
|
- 我们在DefaultListableBeanFactory里搜索,发现了registerBeanDefinition(注册Bean定义信息)这个方法名很像我们要找的东西,再看里面的代码,果然有`beanDefinitionMap.put()`这串代码,我们试着在这里打个断点
|
||||||
- 然后启动下面的测试类
|
- 然后启动下面的测试类
|
||||||
@@ -973,6 +977,10 @@ public interface Aware {
|
|||||||
|
|
||||||
#### 创建Person对象
|
#### 创建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调用栈
|
##### Debug调用栈
|
||||||
|
|
||||||
为了知道Aware的原理,我们给上面的pos_1和pos_2位置打上断点,看下是怎么进来的
|
为了知道Aware的原理,我们给上面的pos_1和pos_2位置打上断点,看下是怎么进来的
|
||||||
@@ -1165,7 +1173,7 @@ public class MainConfig {
|
|||||||
synchronized (this.singletonObjects) {
|
synchronized (this.singletonObjects) {
|
||||||
// ...
|
// ...
|
||||||
try {
|
try {
|
||||||
// 通过getObject获取真正的对象,有点类似于FactoryBean(这个不懂的建议先了解下Spring基本欧诺个发),
|
// 通过getObject获取真正的对象,有点类似于FactoryBean(这个不懂的建议先了解下Spring基本用法),
|
||||||
// ObjectFactory类注释有说明。
|
// ObjectFactory类注释有说明。
|
||||||
singletonObject = singletonFactory.getObject();
|
singletonObject = singletonFactory.getObject();
|
||||||
newSingleton = true;
|
newSingleton = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user