springIoC初始化过程
2020-02-26 15:04:40 0 举报
SpringIOC时序图
作者其他创作
大纲/内容
4、processBeanDefinition()
doLoadBeanDefinitions()
loadBeanDefinitions(resource)
BeanDefinitionParserDelegate
2、该方法功能不重要设计模式重点看一下装饰者设计模式加上SPI设计思想decorateBeanDefinitionIfRequired()
AbstractRefreshableApplicationContext
注册
refreshBeanFactory()
A
1、委托模式parseBeanDefinitionElement(Element ele)
encodedResource.getResource().getInputStream()获取Resource对象中的xml文件流对象
new InputSource(inputStream)把流对象封装成jdk中的sax xml文件解析对象
refresh()
委托给Reader进行XML解析loadBeanDefinitions(configLocations)
参数为:“spring.xml”setConfigLocations(configLocations)
1、创建GenericBeanDefinition对象2、解析Bean标签的属性,并把解析出来的属性设置到BeanDefinition对象中3、解析Bean中的meta标签4、解析Bean中的LookUp-method标签5、解析Bean中replaced-method标签6、解析Bean中的constructor-arg标签7、解析Bean中的property标签
ClassPathXmlApplicationContext
1、doRegisterBeanDefinitions()
AbstractApplicationContext
DefaultListableBeanFactory
AbstractBeanDefinitionReader
XmlBeanDefinitionReader
装载
parseBeanDefinitionElement()
AbstractXmlApplicationContext
new XmlBeanDefinitionReader(defaultListableBeanFactory);
创建ClassPathXmlApplicationContext
2、parseBeanDefinitions()
3、默认标签解析,如parseDefaultElement()
BeanDefinitionReaderUtils
创建BeanDefinitionDocumentReader对象,专门负责解析Document对象,委托模式
DefaultBeanDefinitionDocumentReader
自定义标签解析\t\t\t\t\t\tdelegate.parseCustomElement(ele)
registerBeanDefinition
解析xml,并把xml中的标签封装成BeanDefinition对象loadBeanDefinitions(defaultListableBeanFactory)
1、BeanFactory:最顶层的接口,定义了IOC容器基本的功能规范;2、BeanDefinition:Bean对象在Spring实现中是以该类来描述的;3、BeanDefinitionReader:Bean的解析主要就是对Spring配置文件的解析,这个解析过程主要是通过该类完成的。4、图中实线表示调用其他对象的方法,虚线表示当前对象内部方法调用
obtainFreshBeanFactory()
定位
1、获取标签的namespaceURI2、加载META-INF/Spring.handler配置文件,建立映射关系3、根据namespaceURI从映射关系中获取namespaceHandler处理类4、调用namespaceHandler的init方法完成标签解析类的注册5、调用namespaceHandler的parse方法开始真正标签解析过程
收藏
0 条评论
下一页