spring IOC容器启动流程(源码)
2023-05-23 17:57:13 6 举报
AI智能生成
spring IOC容器启动流程(源码),代码调用关系,源码追踪
作者其他创作
大纲/内容
1.prepareRefresh()
2.obtainFreshBeanFactory()
AbstractApplicationContext#refreshBeanFactory()
AbstractRefreshableApplicationContext#createBeanFactory()
AbstractRefreshableApplicationContext#loadBeanDefinitions()
子类AbstractXmlApplicationContext#loadBeanDefinitions()
实例化xmlBeanDefinitionReader,bean定义信息xml读取器
loadBeanDefinitions()
AbstractBeanDefinitionReader#loadBeanDefinitions()
BeanDefinitionReader#loadBeanDefinitions()
XmlBeanDefinitionReader#loadBeanDefinitions()
doLoadBeanDefinitions()
registerBeanDefinitions()
BeanDefinitionDocumentReader#registerBeanDefinitions()
DefaultBeanDefinitionDocumentReader#registerBeanDefinitions()
parseDefaultElement()
processBeanDefinition()
子类AnnotationConfigWebApplicationContext#loadBeanDefinitions()
实例化AnnotatedBeanDefinitionReader,注解配置读取器
AnnotatedBeanDefinitionReader#register()
registerBean()
doRegisterBean()
实例化ClassPathBeanDefinitionScanner,路径扫描器
ClassPathBeanDefinitionScanner#scan()
doScan()
registerBeanDefinition()
3.prepareBeanFactory()
4.postProcessBeanFactory()
5.invokeBeanFactoryPostProcessors()
打印bean信息日志
修改bean定义信息
... 其它方法
12.finishBeanFactoryInitialization()
DefaultListableBeanFactory
BeanDefinitionMap属性
preInstantiateSingletons()
AbstractBeanFactory#getBean()
AbstractBeanFactory#doGetBean()
DefaultSingletonBeanRegistry#getSingleton()
第三级缓存,lambda表达式-----AbstractBeanFactory#createBean()
AbstractAutowireCapableBeanFactory#doCreateBean()
createBeanInstance()
addSingletonFactory()
populateBean()
initializeBean()
invokeAwareMethods()
BeanPostProcessor#postProcessBeforeInitialization
invokeInitMethods()
afterPropertiesSet()
invokeCustomInitMethod()
BeanPostProcessor#postProcessAfterInitialization
AbstractAutoProxyCreator#postProcessAfterInitialization()
wrapIfNecessary()
createProxy
ClassPathXmlApplicationContext
BeanDefinitionReaderUtils#registerBeanDefinition()
BeanDefinitionRegistry#registerBeanDefinition()
DefaultListableBeanFactory#registerBeanDefinition
beanDefinitionMap.put(key,value)
0 条评论
下一页