spring三级缓冲
2022-04-06 17:25:05 10 举报
spring三级缓冲时序图
作者其他创作
大纲/内容
doCreateBean(beanA)创建bean实例
doGetBean(beanA)先从单例缓冲池中获取,没有则创建
createBean(beanA)
singletonFactories
DefaultListableBeanFactory
applyPropertyValues(beanB)处理属性依赖
AbstractBeanFactory
DefaultSingletonBeanRegistry
addSingletonFactory(beanB)加入三级缓冲
resolveReference(beanB)
getSingleton(beanB)
doCreateBean(beanB)创建bean实例
getBean(beanA);获取所有bean的名称
doGetBean(beanA)
createBean(beanB)
AbstractAutowireCapableBeanFactory
refresh()
populateBean(beanB)填充属性
doGetBean(beanB)
addSingleton()
resolveValueIfNecessary(beanB)添加必要依赖
this.beanFactory.getBean(beanA)
AbstractApplicationContext
this.beanFactory.getBean(beanB)
populateBean(beanA)填充属性
addSingletonFactory(beanA)加入三级缓冲
BeanDefinitionValueResolver
getSingleton(beanA)
resolveReference(beanA)
getEarlyBeanReference()SmartInstantiationAwareBeanPostProcessor可以进行扩展
resolveValueIfNecessary(beanA)添加必要依赖
getSingleton(beanA)从缓冲中取先判断一级没有二级没有这时三级缓冲中有
finishBeanFactoryInitialization()完成该上下文的bean工厂的初始化
applyPropertyValues(beanA)处理属性依赖
preInstantiateSingletons()实例化所有立即加载的bean
收藏
0 条评论
下一页