构建bean细化流程-doCreateBean
2020-06-19 10:52:54 0 举报
构建bean细化流程-doCreateBean
作者其他创作
大纲/内容
缓存无
采用缓存
属性填充
存到LinkedHashSet
xml@import@ImportResource@Component+@ComponentScan@Bean@Conditional
getSingleton
bean的初始化
applyMergedBeanDefinitionPostProcessors
xmlclass
有
registerDisposableBeanIfNecessary
如果获取到的单例和前面获取的beanWrapper比较,一致才
initializeBean
缓存有
addSingletonFactory
没有
先判断RootBeanDefinition中是否有工厂方法
获取单例对象
createBeanInstance
postProcessMergedBeanDefinition
populateBean
默认无参构造器
invokeInitMethods
actualDependentBeans
beandefinition
bean的包装类beanWrapper
判断这个bean是不是factoryBean
②执行bean生命周期的init
①配置@postConstruct的会调用再次执行后置处理器
applyBeanPostProcessorsBeforeInitialization
一个类可能有多个构造器,所以Spring得根据参数个数、类型确定需要调用的构造器 。在使用构造器创建实例后,Spring会将解析过后确定下来的构造器或工厂方法保存在缓存中,避免再次创建相同bean时再次解析
AbstractAutowireCapableBeanFactory#doCreateBean
解析
instantiateBean
对循环依赖的判断,注册到单例池
determineConstructorsFromBeanPostProcessors判断有没有后置处理器
applyBeanPostProcessorsAfterInitialization
初始化
构建
BeanWrapper#getWrappedInstance
instantiateUsingFactoryMethod
autowireConstructor
③执行后置处理器实现AOP
具体的构建过程
装配
后置处理器处理bean
先到缓存中找是否已存在解析好的,如果没有就看有没有意见准备好要解析的构造函数或者工厂方法
Bean
针对缓存的单例池earlySingletonExposure
执行缓存中的构造函数或工厂方法
0 条评论
回复 删除
下一页