Spring 技术内幕---XmlBeanFactory涉及到的回调

   看到第2章 XmlBeanFactory的工作原理这里,作者列举了一段创建Ioc容器代码:

   ClassPathResource res=new  ClassPathResource ("bean.xml");

   DefaultListabelBeanFactory factory =new  DefaultListabelBeanFactory ();

    XmlBeanDefinitionReader reader= new  XmlBeanDefinitionReader (factory);

    reader.loadBeanDefinition(res);

   

   作者的讲解是:

       创建一个Ioc配置文件的抽象资源,bean.xml是具体的文件。 然后创建一个BeanFactory, 再创建一个配置文件的读取器, 最后调用loadBeanDefinition方法,载入配置文件并通过回调注册bean定义。

 

    问题关键是红色部分的描述。载入配置文件可以理解,那么注册是在哪一步做到的呢? 经过网上查找帖子,并在源代码中找来找去(类名太长很难记),最后得出结论。

 

    载入配置文件和注册bean都是在XmlBeanDefinitionReader调用以后的后续动作中处理的(当然过程中也调用了其他类)。,先载入配置再注册,在

    XmlBeanDefinitionReader reader= new  XmlBeanDefinitionReader (factory);

这一句 之所以要使用factory参数,就是reader在做完配置文件载入之后,再把factory拿过来,把刚读入的xml文件中的信息注册到factory。回调也就是体现在这里。

    通俗的来说,就是DefaultListabelBeanFactory 是一个beanFactory,用来管理bean,但是他却不能注册bean,所以就需要把自己(容器)交给 XmlBeanDefinitionReader ,而XmlBeanDefinitionReader 恰恰可以处理配置信息并且注册 bean,XmlBeanDefinitionReader 载入后,再把这个bean的信息注册到 DefaultListabelBeanFactory 给的容器里,还给DefaultListabelBeanFactory。

   -----以上内容是使用的spring3.0.5版本的源代码。   

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值