2. spring
v AwareSpringAwareBeanNameAwareBeanNameAware
v xmlproperties
v BeanDefinationJavaxmlBeanDefination
v BeanDefinationReaderBeanDefinationReaderBeanDefination
v BeanDefinationRegistrySpringBeanDefinationReaderBeanDefinationBeanDefinationRegistryBeanDefinationRegistryBeanDefinationBeanidBeanDefination
v BeanFactoryPostProcessorBeanFactoryPostProcessorSpringBeanDefinationRegistryBeanDefinationBeanFactoryPostProcessorBeanDefinationRegistryBeanDefination$
v BeanDefinationRegistryBeanDefinationSpringBean
v AbstractApplicationContext.finishBeanFactoryInitialization()beanSpringBeanDefinationRegistryBeanDefinationSpringfinishBeanFactoryInitialization()BeangetBeanBean
v BeanWrapperSpringBeanSpring IOCSpringBeanBeanWrapperBeanWrapperAPIAPIBeanWrapper
v AbstractBeanFactorydoGetBean()beandoGetBean()beanbeanFactorybean
1beanName() String FACTORY_BEAN_PREFIX = "&"; springalias
2
3bean
beanbeanbean,beanbeangetObjectForBeanInstance() RootBeanDefinitionBeanPostProcessor
4bean
4.1 ()
4.2
4.3XMLGernericBeanDefinitionRootBeanDefinition XMLbeanGernericBeanDefinitionBeanRootBeanDefinition
4.4beanbeanbeanbeanbeanbeangetBean
4.5beanAbstractAutowireCapableBeanFactory.createBean()
4.5.1 class className Class
4.5.2 lookup-method replaced-method beanDefinition methodOverrides bean methodOverrides bean bean
4.5. 3resolveBeforeInstantiation().bean beanPostProcessor bean.InstantiationAwareBeanPostProcessor.postProcessBeforeInstantiation(BeanPostProcessor.postProcessAfterInitialization) bean bean bean postProcessAfterInitialization beanbeanbeandoCreateBean.
4.5.4 beandoCreateBean()bean
4.5.4.1beanbean
4.5.4.2beanbeanBeanDifinition BeanWrapper
createBeanInstance()bean
--
--bean bean
-- bean
4.5.4.3beanbeanAutowired
4.5.4.4bean
4.5.4.5beanbeanbean
1 InstantiationAwareBeanPostProcessor postProcessAfterInstantiation
2byType/byNamePropertyValues
3BeanPostProcessor
InstantiationAwareBeanPostProcessor postProcessPropertiescheckDependencies
4 PropertyValues BeanWrapper
4.5.4.6beanafeterPropertiesSet() init-method
---AwareSpringxxxAwareAwareSpring
BeanBeanNameAwaresetBeanName(String beanId)Bean
BeanBeanClassLoaderAwaresetBeanClassLoader()ClassLoader
BeanBeanFactoryAwaresetBeanFactory()Spring
BeanApplicationContextAwaresetApplicationContext(ApplicationContext)Spring
---BeanPostProcessorBeanBeanBeanPostProcessorpostProcessBeforeInitialization(Object obj, String s)
--- init @PostConstruct
BeanInitializingBeanafeterPropertiesSet()
BeanSpring init-method
---BeanPostProcessorBeanBeanPostProcessorpostProcessAfterInitialization(Object obj, String s)Bean
4.5.4.7
4.5.4.8DisposableBeandestroy-method
4.5.4.9
AbstractBeanFactory.getObjectForBeanInstance(): getBean()getObjectForBeanInstance() bean scope beanbeanbeanbeanbean
1 bean bean
2 FactoryBean
3 FactoryBeanFactoryBean bean getObjectFromFactoryBean() bean FactoryBean.getObject()
Bean
https://blog.csdn.net/a745233700/article/details/113840727