IoC工作原理
2021-06-28 13:47:16 0 举报
此图是我对SpringIoC源码的理解,供大家学习交流
作者其他创作
大纲/内容
BeanDefinitionRegistry
singletonObject = singletonFactory.getObject();
注册
beanName
获取单例工厂
装配
FactoryBean
singleton
new
xml
DefaultListableBeanFactory
@ImportResource
singletonObject
容器启动创建非懒加载单例bean
User.class
autowireMode=0
BeanDefinition
@Import
先去单例对象池中拿
earlySingletonObjects
..........
singletonObjects
AbstractAutowireCapableBeanFactory
解析
装配方式
AbstractBeanFactory
返回bean
BeanFactory
scope=singleton
返回结果
singletonFactory
lazyInit = false
ObjectFactory<?> singletonFactory = this.singletonFactories.get(beanName);
singletonFactories
填充属性,注入依赖bean
DefaultSingletonBeanRegistry
注入依赖bean
beanDefinitionMap
xml bean
singletonObject == null && isSingletonCurrentlyInCreation(beanName)
beanClass=User.class
去bean工厂中获取
反射创建bean实例
判断缓存对象池中是否有
在判断是否是FactoryBean
context.getBean(\"user\")
初始化,包括设置Aware属性,处理AOP逻辑
拿到bean
Object sharedInstance = getSingleton(beanName);
ApplicationContext
提前暴露对象,作为依赖对象注入
缓存singleton工厂
循环依赖判断
@Component+@ComponentScan
@Conditional
缓存单例工厂
缓存单例bean
prototype
创建单例bean
判断scope类型
@Bean
0 条评论
回复 删除
下一页