01. 05.19 周四
1.1)Spring源码
1.1.1)Bean的生命周期
![在这里插入图片描述](https://img-blog.csdnimg.cn/6ae1570110ce49c0b2512f42c326cdaf.png)
- Spring源码中有 7000多个 类
- Spring中默认内置了 Tomcat,是在 OnRefresh() 方法实现的
- 容器对象:
ApplicationContext BeanFactory 等
-
AOP是IOC中的一个流程
-
afterPropertiesSet()
方法是 给用户最后一次来进行初始化或者某些方法的调用操作
-
源码方法论
02. 05.20 周五
2.1) 循环依赖
-
最后一个地方形成闭环地方,破之
-
A是半成品对象,已经实例化完成了,但是没有初始化完成
-
解决:
三级缓存,提前暴露对象
三级缓存指的是 三个map结构
- 三级缓存
ObjectFunction是一个 函数式接口,可以将当前类型作为一个方法的参数,传递的时候,可以将lambda 表达式传递进去,在执行的时候需要通过
getObject
方法来调用具体的 lambda表达式的执行
-
lambda表达式,先不允许,等调用 getObject方法时,实际运行
-
初步放到 三级缓存里
三级缓存,一级缓存 singletonObjects中存的是成品。
二级缓存 earlySingletonObjects中存的是 半成品
三级缓存 singletonFactiries 存的是 lambda表达式
2.1.1)结论