dubbo的main函数调用过程
2021-03-30 16:46:38 0 举报
登录查看完整内容
main函数调用过程
作者其他创作
大纲/内容
refreshBeanFactory()执行配置加载
调用载入Bean定义的方法loadBeanDefinitions()
对IoC容器进行定制化配置,如允许相同名字bean覆盖、允许bean循环引用customizeBeanFactory(beanFactory)
AbstractRefreshableApplicationContext
AbstractBeanDefinitionReader
创建IoC容器createBeanFactory()
//通知子类刷新内部bean工厂。obtainFreshBeanFactory();
Bean读取器真正实现加载的方法 loadBeanDefinitions
加载多个指定位置的Bean定义资源文件getResources()
如果已经有容器,销毁容器中的bean,关闭容器
AbstractApplicationContext
Main.Main()根据启动参数获取spring容器SpringContainer
调用容器准备刷新的方法,获取容器的当时时间,同时给容器设置同步标识 prepareRefresh();
也使用委派设计模式
调用父方法refresh()函数启动整个IoC容器对Bean定义的载入
loadBeanDefinitions()
SpringContainer.start()启动
为Bean读取器设置Spring资源加载器;自身也是加载器beanDefinitionReader.setResourceLoader(this);
实例化 ClassPathXmlApplicationContext(String configLocation)
获取在IoC容器初始化过程中设置的资源加载器getResourceLoader()
这里使用了委派设计模式,父类定义了抽象的refreshBeanFactory()方法,具体实现调用子类容器的refreshBeanFactory()方法
为Bean读取器设置SAX xml解析器setEntityResolver(new ResourceEntityResolver(this))
创建Bean读取器,并通过回调设置到容器new XmlBeanDefinitionReader(beanFactory)
收藏
0 条评论
回复 删除
下一页