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