>> 建立DefaultListableBeanFactory --> loadBeanDefinitions
app
1)BeanDefinitionRegistryPostProcessor.postProcessBeanDefinitionRegistry(编码注册)post
2)BeanDefinitionRegistryPostProcessor.postProcessBeanDefinitionRegistry(配置注册):PriorityOrdered排序 --> Ordered排序 --> 无序编码
3)BeanFactoryPostProcessor.postProcessBeanFactory(编码注册):BeanDefinitionRegistryPostProcessor --> BeanFactoryPostProcessorspa
4)BeanFactoryPostProcessor.postProcessBeanFactory(配置注册):PriorityOrdered排序 --> Ordered排序 --> 无序排序
1)PriorityOrdered排序 --> Ordered排序 --> 无序it
2)MergedBeanDefinitionPostProcessorio
1)InstantiationAwareBeanPostProcessor.applyBeanPostProcessorsBeforeInstantiation(resolveBeforeInstantiation)table
>> 获取bean --> 6class
>> createBeanInstance(默认:CglibSubclassingInstantiationStrategy.instantiate) --> 2容器
2)MergedBeanDefinitionPostProcessor.postProcessMergedBeanDefinitioInstantiationAwareBeanPostProcessor
3)InstantiationAwareBeanPostProcessor.postProcessAfterInstantiation
>> autowireByName / autowireByType
4)InstantiationAwareBeanPostProcessor.postProcessPropertyValues
>> applyPropertyValues
5)BeanPostProcessor.postProcessBeforeInitialization(@postConstruct)
>> InitializingBean.afterPropertiesSet --> invokeInitMethod(init-method )
6)BeanPostProcessor.postProcessAfterInitialization
>> 单实例(容器初始化完成):SmartInitializingSingleton.afterSingletonsInstantiated
1)BeanFactoryPostProcessor
2)BeanPostProcessor:ApplicationContextAwareProcessor、InitDestroyAnnotationBeanPostProcessor、AutowiredAnnotationBeanPostProcessor、AOP