Update 循环依赖.md

pull/127/head
Yang Libin 3 years ago committed by GitHub
parent 69770519cb
commit c0e37202a8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,4 +1,4 @@
## 循环依赖
# 循环依赖
一个对象依赖对象闭环到自己
@ -10,9 +10,7 @@ tip:
解决方法:当一个对象已经实例化完毕了,还未初始化的时候,将它注入到它所依赖的已经实例好的对象(提前暴露对象),使得它所依赖的对象是个完整对象(实例化+初始化),然后再将这个完整对象注入给它。
<hr/>
### 简单工程Spring-version-5.3.18)
## 简单工程Spring-version-5.3.18)
我们就用下面两个类进行实践,多个类间依赖也是如此。
@ -80,7 +78,7 @@ private final Map<String, Object> earlySingletonObjects = new ConcurrentHashMap<
doCreateBean 这个方法
> 可以参照[createBeanInstance](https://github.com/yang520-bye/source-code-hunter/blob/main/docs/Spring/clazz/Spring-beanFactory.md#createbeaninstance)查看Spring是怎么实例化的
> 可以参照 [createBeanInstance](/docs/Spring/clazz/Spring-beanFactory.md#createbeaninstance) 查看 Spring 是怎么实例化的
```java
protected Object doCreateBean(String beanName, RootBeanDefinition mbd, @Nullable Object[] args)
@ -154,7 +152,7 @@ protected Object getEarlyBeanReference(String beanName, RootBeanDefinition mbd,
}
```
populateBean中有调用了applyPropertyValues这个方法具体详情请点击这里[applyProertyValues](https://github.com/doocs/source-code-hunter/blob/main/docs/Spring/clazz/Spring-beanFactory.md#applypropertyvalues)
populateBean 中有调用了 applyPropertyValues 这个方法具体详情请点击这里 [applyProertyValues](/docs/Spring/clazz/Spring-beanFactory.md#applypropertyvalues)
```java
protected void applyPropertyValues(String beanName, BeanDefinition mbd, BeanWrapper bw, PropertyValues pvs) {
@ -263,11 +261,8 @@ protected Object getSingleton(String beanName, boolean allowEarlyReference) {
最后经历这个就获取到一个半成品对象所依赖的一个完整对象,然后再将完整对象注入半成品对象中。
<hr/>
### 历程
Tip
## 历程
> 该历程仅代表当前这个项目工程
<img src="https://github.com/yang520-bye/source-code-hunter/blob/main/images/spring/%E5%BE%AA%E7%8E%AF%E4%BE%9D%E8%B5%96.png"/>
![image](/images/spring/循环依赖.png)

Loading…
Cancel
Save