BeanFactory的简单介绍和使用

我们还是先来看一下BeanFactory的整体架构,看一下红框,我们可以发现,BeanFactory的具体实现除了SimpleJndiBeanFactory和StaticListableBeanFactory之外,其他的底层实现都是XmlBeanFactory。

[img]http://dl2.iteye.com/upload/attachment/0087/8443/7cddd605-b783-3ee5-8aac-7613151bc204.jpg[/img]

我们来看一下类图

[img]http://dl2.iteye.com/upload/attachment/0087/8445/1f2428f2-17a3-3b75-81ce-161e8c7e25b8.jpg[/img]
从这张类图上,我们还是能非常清晰地了解BeanFactory的整体架构的,其最终实现就是XmlBeanFactory,从名字上我们可以看到是解析Xml格式文件的BeanFactory,这样就显得比较单一,所以从Spring 3.1版本以上,XmlBeanFactory已经被Spring设置成不推荐使用了,而改用DefaultListableBeanFactory:


Resource resource = new ClassPathResource("beans.xml");
return new XmlBeanFactory(resource);

改成了

Resource resource = new ClassPathResource("beans.xml");
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
BeanDefinitionReader reader = new XmlBeanDefinitionReader(beanFactory);
reader.loadBeanDefinitions(resource);

从代码上的变化我们可以发现,虽然实现稍微有点复杂了,DefaultListableBeanFactory需要通过显式地创建BeanDefinitionReader类型的读取器读取beans.xml里的数据,但是读取文件的格式能更加多样化了,看下面BeanDefinitionReader的架构:

[img]http://dl2.iteye.com/upload/attachment/0087/8447/7a442a71-d899-32be-98eb-3067552920a9.jpg[/img]
除了XmlBeanDefinitionReader实现,还有PropertiesBeanDefinitionReader实现,甚至用户可以自定义实现一种数据格式的BeanDefinitionReader。
因为用得不是很多,而且我们知道ApplicationContext的底层实现也是一种BeanFactory,所以这里暂时就写这些,等分析ApplicationContext源码时,我们再来分析即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值