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注册流程
|
||||
|
||||
<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;
|
||||
|
||||
Reference in New Issue
Block a user