美文网首页
ioc 容器 (1)

ioc 容器 (1)

作者: bigseaken | 来源:发表于2017-07-30 14:50 被阅读0次
引用了《spring技术内幕》中 ioc的设计图

BeanFactory是ioc容器的基础,提供了最基本的检索方法,具体的实现类才能发现ioc容器真正的是怎么样的。AutowireCapableBeanFactory继承了BeanFactory,然后找了的抽象的实现类 AbstractAutowireCapableBeanFactory,最终找到了最简单的ioc容器的实现类XmlBeanFactory。从XmlBeanFactory就能找到我们所需要的bean是怎么一步步的加载到Ioc容器里的。

XmlBeanFactory只是提供了加载资源的入口,具体的加载过程交给XmlBeanDefinitionReader来做,这里就是一个最佳的实践:面向对象编程,具体的类做具体的事情,把过程操作抽象出一个对象来。

重点看doLoadBeanDefinitions doLoadBeanDefinitions将xml转换为Document

doLoadDocument可以理解为解析xml的过程,比如常用的dom4j是解析,当然spring用的是它自己的解析xml技术,因为我们关心的是bean如何加载的ioc容器里面的,所有这一步过程直接抽象doLoadDocument就当作解析xml获取Document的过程。我们直接关注registerBeanDefinitions这个方法就好了。

直接看注解:创建解析器类的新实例并调用 ,把全部bean的注册直接交给了BeanDefinitionDocumentReader,具体实现交给DefaultBeanDefinitionDocumentReader parseBeanDefinitions的过程就是区分IMPORT_ELEMENT ALIAS_ELEMENT BEAN_ELEMENT同时把bean放在beanDefinitionsMap里

总结:new XmlBeanFactory的过程就是将xml解析,解析到beanDefinition这样的数据结构,最后把它全部以beanName-beanDefinition的方式放到Map里。

相关文章

网友评论

      本文标题:ioc 容器 (1)

      本文链接:https://www.haomeiwen.com/subject/hifhlxtx.html