Skip to content
Open
Changes from 1 commit
Commits
Show all changes
95 commits
Select commit Hold shift + click to select a range
8107811
instantiation-strategy
DerekYRC Nov 24, 2020
bf88d6a
instantiation-strategy
DerekYRC Nov 24, 2020
aa3ec5a
包扫描
DerekYRC Dec 26, 2020
ad87fc0
update readme.md
DerekYRC Dec 26, 2020
be7526f
update changelog.md
DerekYRC Dec 26, 2020
07d5ed0
@Value注解
DerekYRC Dec 27, 2020
b59d219
update readme.md
DerekYRC Dec 27, 2020
fb9077b
update readme.md
DerekYRC Dec 27, 2020
0806b4e
update readme.md
DerekYRC Dec 27, 2020
408a37a
update changelog.md
DerekYRC Dec 27, 2020
f90b1d2
@Autowired注解
DerekYRC Dec 27, 2020
9e2b1e4
为AOP代理对象注入属性
Dec 30, 2020
8c1e6fe
Merge pull request #3 from kerwin89/populate-proxy-bean-with-property…
DerekYRC Dec 30, 2020
e12a210
修复没有为代理bean设置属性的问题
DerekYRC Dec 30, 2020
44f6498
update readme.md
DerekYRC Dec 30, 2020
ff04402
update readme.md
DerekYRC Dec 30, 2020
fc7de06
类型转换(一)
DerekYRC Jan 16, 2021
433a1c6
类型转换(一)
DerekYRC Jan 16, 2021
07b54b2
update change.log
DerekYRC Jan 16, 2021
838821e
update readme.md
DerekYRC Jan 16, 2021
21b831a
类型转换二
DerekYRC Jan 17, 2021
e0ddf60
update readme.md
DerekYRC Jan 17, 2021
7a3c32d
解决循环依赖问题
DerekYRC Jan 25, 2021
b2cdbb2
没有代理对象的循环依赖
DerekYRC Jan 30, 2021
389c721
没有代理对象的循环依赖
DerekYRC Jan 30, 2021
6eba0ad
没有代理对象的循环依赖
DerekYRC Jan 30, 2021
bfd342b
有代理对象的循环依赖
DerekYRC Jan 30, 2021
26306ec
有代理对象时的循环依赖问题
DerekYRC Jan 30, 2021
c380a8b
有代理对象时的循环依赖问题
DerekYRC Jan 30, 2021
fc5e5dc
Update README_CN.md
DerekYRC Jan 30, 2021
d66a48f
Update README_CN.md
DerekYRC Jan 30, 2021
2697e29
update readme.md
DerekYRC Jan 30, 2021
1a50a46
update readme.md
DerekYRC Jan 30, 2021
b29bc9b
update readme.md
DerekYRC Jan 30, 2021
a2dd472
update readme.md
DerekYRC Jan 30, 2021
385492e
update readme.md
DerekYRC Jan 30, 2021
2086a0c
update readme.md
DerekYRC Jan 30, 2021
a41ad3e
update changelog.md
DerekYRC Jan 30, 2021
75e8309
update changelog.md
DerekYRC Jan 30, 2021
cf3d98b
解决有代理对象时的循环依赖问题
DerekYRC Jan 31, 2021
22e329b
提前实例化单例bean时对beanDefinition的scope添加判断
DerekYRC Feb 27, 2021
3b79ca8
修复文档书写问题
DerekYRC Apr 7, 2021
bd59c50
修复文档书写问题
DerekYRC Apr 7, 2021
c280322
Update README_CN.md
DerekYRC Mar 15, 2022
db08891
添加mini-spring-cloud链接
DerekYRC Mar 19, 2022
8b5b311
添加mini-spring-cloud链接
DerekYRC Mar 19, 2022
ba969c8
添加mini-spring-cloud链接
DerekYRC Mar 19, 2022
9847004
添加mini-spring-cloud链接
DerekYRC Mar 19, 2022
00ec699
update readme
DerekYRC Mar 26, 2022
83ecf3d
update readme
DerekYRC Apr 1, 2022
7b03bee
Update README_CN.md
DerekYRC Apr 2, 2022
ac470cb
Update README_CN.md
DerekYRC Apr 2, 2022
17ee282
update readme
DerekYRC Apr 6, 2022
2efb823
update changelog
DerekYRC Apr 7, 2022
4cd9cd8
implement cglib instantiation strategy
FreeSlaver Jun 14, 2022
26c48e5
update typos in changelog.md
Jun 23, 2022
4fe95f4
Merge pull request #27 from zhenglinhui/patch-1
DerekYRC Jun 23, 2022
be8f86f
Merge pull request #26 from FreeSlaver/instantiation-strategy
DerekYRC Jun 23, 2022
d1c291f
Merge branch 'main' into instantiation-strategy
DerekYRC Jun 23, 2022
8ed8a83
Merge pull request #28 from DerekYRC/instantiation-strategy
DerekYRC Jun 23, 2022
df3bb7c
update changelog
DerekYRC Jul 5, 2022
0164b61
Merge branch 'main' of github.com:DerekYRC/mini-spring
DerekYRC Jul 5, 2022
dcbcc74
update changelog
DerekYRC Jul 5, 2022
69055f4
bean初始化和销毁方法
DerekYRC Aug 23, 2022
fe144dc
bean初始化和销毁方法
DerekYRC Aug 23, 2022
a632e4c
update readme
DerekYRC Aug 23, 2022
187aebc
update readme
DerekYRC Aug 23, 2022
39e3747
update readme
DerekYRC Aug 23, 2022
8b500d5
Update README.md
DerekYRC Nov 23, 2022
c91c533
Update README.md
DerekYRC Nov 23, 2022
4d013a6
Update changelog.md
DerekYRC Nov 25, 2022
5dfe53b
Update changelog.md
DerekYRC Nov 25, 2022
9d9ed15
Update README.md
DerekYRC Dec 5, 2022
bf1f13d
增加懒加载,重写了AOP的实现。
zqczgl Dec 21, 2022
e142da1
修改changelog
zqczgl Dec 22, 2022
f1cf4fb
Merge pull request #40 from zqczgl/main
DerekYRC Dec 23, 2022
e771a6e
修改了DynamicProxyTest
zqczgl Dec 23, 2022
15f0b25
Merge pull request #41 from zqczgl/main
DerekYRC Dec 23, 2022
277afdc
支持懒加载和多切面增强
DerekYRC Dec 26, 2022
ffc451c
update readme
DerekYRC Dec 26, 2022
db1ba10
update readme
DerekYRC Dec 26, 2022
d204fd6
Update changelog.md
zqczgl Dec 28, 2022
b2020c2
Merge pull request #42 from zqczgl/patch-1
DerekYRC Dec 29, 2022
060de4f
Update README.md
DerekYRC Jan 31, 2023
00b8237
Update changelog.md
DerekYRC Feb 17, 2023
5cafaa0
将BeanDefinition 的Map 修改成为并发Map ,并设置初始化大小
1713612859 Oct 8, 2023
246442b
Merge pull request #61 from 1713612859/main
DerekYRC Oct 8, 2023
727abca
避免继承自InitializingBean,且自定义方法与InitializingBean方法同名,初始化方法执行两次的情况
Whale-lyi Nov 30, 2023
bb71305
Merge pull request #64 from Whale-lyi/init-and-destroy-method
DerekYRC Nov 30, 2023
9a0d36c
Merge remote-tracking branch 'origin/init-and-destroy-method'
DerekYRC Nov 30, 2023
b9f4673
Update README.md
wangflyzihao Feb 20, 2024
faf9f5f
Merge pull request #67 from wangflyzihao/main
DerekYRC Feb 21, 2024
1b93838
在README.md的使用方法章节添加了视频教程链接
rice666 Mar 5, 2024
ef07ca1
Merge pull request #68 from rice666/main
DerekYRC Mar 5, 2024
2b4079e
属性占位符替换时增加判断
zzziCode Mar 11, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
修复文档书写问题
  • Loading branch information
DerekYRC committed Apr 7, 2021
commit 3b79ca8c119162b66b4f465cb3c2609bc6b3c76f
8 changes: 4 additions & 4 deletions changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,11 @@ public class SimpleBeanContainerTest {
> 分支:bean-definition-and-bean-definition-registry

主要增加如下类:
- BeanDefinition,顾名思义,用于定义bean信息的类,包含bean的class类型、构造参数、属性值等信息,每个bean对应一个BeanDefinition的实例。简化BeanDefition仅包含bean的class类型
- BeanDefinitionRegistry,BeanDefinition注册表接口,定义注册BeanDefintion的方法
- BeanDefinition,顾名思义,用于定义bean信息的类,包含bean的class类型、构造参数、属性值等信息,每个bean对应一个BeanDefinition的实例。简化BeanDefinition仅包含bean的class类型
- BeanDefinitionRegistry,BeanDefinition注册表接口,定义注册BeanDefinition的方法
- SingletonBeanRegistry及其实现类DefaultSingletonBeanRegistry,定义添加和获取单例bean的方法。

bean容器作为BeanDefinitionRegistry和SingletonBeanRegistry的实现类,具备两者的能力。向bean容器中注册BeanDefintion后,使用bean时才会实例化。
bean容器作为BeanDefinitionRegistry和SingletonBeanRegistry的实现类,具备两者的能力。向bean容器中注册BeanDefinition后,使用bean时才会实例化。

![](./assets/bean-definition-and-bean-definition-registry.png)

Expand Down Expand Up @@ -1438,7 +1438,7 @@ A依赖B,B又依赖A,循环依赖。容器加载时会执行依赖流程:
解决该问题的关键在于何时将实例化后的bean放进容器中,设置属性前还是设置属性后。现有的执行流程,bean实例化后并且设置属性后会被放进singletonObjects单例缓存中。如果我们调整一下顺序,当bean实例化后就放进singletonObjects单例缓存中,提前暴露引用,然后再设置属性,就能解决上面的循环依赖问题,执行流程变为:

- 步骤一:getBean(a),检查singletonObjects是否包含a,singletonObjects不包含a,实例化A放进singletonObjects,设置属性b,发现依赖B,尝试getBean(b)
- 步骤二:getBean(b),检查singletonObjects是否包含b,singletonObjects不包含a,实例化B放进singletonObjects,设置属性a,发现依赖A,尝试getBean(a)
- 步骤二:getBean(b),检查singletonObjects是否包含b,singletonObjects不包含b,实例化B放进singletonObjects,设置属性a,发现依赖A,尝试getBean(a)
- 步骤三:getBean(a),检查singletonObjects是否包含a,singletonObjects包含a,返回a
- 步骤四:步骤二中的b拿到a,设置属性a,然后返回b
- 步骤五:步骤一种的a拿到b,设置属性b,然后返回a
Expand Down