bean初始化详细流程
2021-08-16 20:49:38 5 举报
bean初始化流程
作者其他创作
大纲/内容
BeanDefinitions
applyBeanPostProcessorsBeforeInitialization方法执行bean的后置处理器的before方法
applyBeanPostProcessorsAfterInitialization方法执行bean的后置处理器的after方法
实例化beanPostProcessor类并注册到beanPostProcessors
getSingleton(beanName);尝试一级缓存中获取没有尝试获取singletonFactory.getObject();
将xml中的bean添加到beanDefinitionMap中
实例化InstantiationAwareBeanPostProcessorAdapter并注册
getBean(BeanName)
finishBeanFactoryInitialization()bean工厂的初始化
BeanNameAware的setBeanName方法
创建beanDefinitionReader读取xml文件
loadBeanDefinitions()加载beanDefinitions
refreshBeanFactory刷新bean工厂
InstantiationAwareBeanPostProcessor的PostProcessorsBeforeInitialization方法
BeanFactoryAware的BeanFactoryAware方法
doGetBean(BeanName)
执行InitializingBean.afterPropertiesSet()的方法
initializeBean方法
beanFactory.preInstantiateSingletons();方法
调用init-method属性指定的初始化方法
调用BeanFactoryPostProcessor的postProcessBeanFactory方法
初始化bean
BeanClassLoaderAware的setBeanClassLoaderAware方法
调用DisposableBean.destroy()方法
InstantiationAwareBeanPostProcessor的postProcessAfterInitialization方法
实例化bean
registerBeanPostProcessors(beanFactory);注册beanPostProcessor,InstantiationAwareBeanPostProcessorAdapter
BeanPostProcessor的postProcessAfterInitialization方法
注入属性
执行@PostConstruct方法
obtainFreshBeanFactory()方法创建容器对象:DefaultListableBeanFactory 加载xml文件的属性,得到BeanDefinition
refresh()方法
invokeAwareMethods方法
容器初始化
BeanPostProcessor的PostProcessorsBeforeInitialization方法
invokeBeanFactoryPostProcessors(beanFactory);设置beanFactory的后置处理器
实例化BeanFactoryPostProcessor类
populateBean()方法
调用<bean>的destroy-method属性指定的初始化方法
0 条评论
下一页