职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 380|回复: 1

BeanFactory定了IoC的基本特性

[复制链接]
楠楠 发表于 2011-8-29 10:30 | 显示全部楼层 |阅读模式
    我们知道BeanFactory定义了Ioc容器的基本功能规范,Ioc容器的基本接口是有BeanFactory来定义的,也就是说BeanFactory 定义了Ioc容器的最基本的形式,并且提供了Ioc容器所应该遵守的最基本的服务契约。与此同时,BeanFactory也是我们使用Ioc容器所应该遵守的最底层和最基本的编程规范。在spring中BeanFactory只是一个接口,并没有给出容器的具体实现,而我们可以从各种spring中给出的具体类中,比如DefaultListableBeanFactory 、XmlBeanFactory、ApplicationContext等实现类,都可以看成是容器的附加了某种功能的具体实现。BeanFactory是怎样定义IoC容器的基本接口的呢???
   用户在使用容器时,可以使用转义字符“&”来得到FactoryBean本身,用来区分通过容器来获取FactoryBean产生的对象和获取FactoryBean本身。例如,myJndiObject是一个FactoryBean,那么使用&myJndiObject得到的是FactoryBean,而不是myJndiObject这个FactoryBean产生的对象。
  BeanFactory接口设计了getBean方法,这个方法是使用IoC容器API的主要方法,通过此方法,可以获得IoC容器管理的Bean。如果需要在获取Bean时对Bean的类型进行检查,BeanFactory接口定义了带有参数的getBean方法。当获取bean时,需要获取的Bean是prototype类型的,用户还可以为这个prototype类型的Bean生成指定构造函数的对应参数。这使得在一定程度上可以控制生成prototype类型的Bean。有了BeanFactory的定义,用户可以执行以下操作:
   1.通过接口方法containsBean让用户能够判断容器是否含有指定名字的Bean。
   2.通过接口方法isSingleton来查询指定名字的Bean是否是Singleton类型的Bean。对于Singleton属性,用户可以在BeanDefinition中指定。
   3.通过接口方法isPrototype来查询指定名字的Bean是否是Prototype类型的Bean.对于prototype属性,用户同样可以在BeanDefinition中指定。
   4.通过接口方法isTypeMatch来查询指定名字的Bean的Class类型是否是特定的Class类型。这个Class类型可以由用户自己指定。
   5.通过接口方法getType来查询指定了名字的Bean的Class类型。
   6.通过接口方法getAliases来查询指定了名字的Bean的所有别名,这些别名都是用户在BeanDefinition中定义的。
BeanFactory定义这些方法,勾画出了IoC容器的基本特性。
  

jinchang 发表于 2011-8-29 10:30 | 显示全部楼层
在我们使用的application的时候 本质上内部的BeanFatory还是DefaultListableBeanFactory这个类型,而具体的比如getBean的实现是通过AbstractAutowireCapableBeanFactory来实现的等等, 在spring的Beanfatory的家族中各个的关系很复杂 但是每一个的功能都很明确
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-4-27 20:06 , Processed in 0.116862 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表