论坛首页 Java企业应用论坛

BeanFactory定了IoC的基本特性

浏览 2029 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-07-04  
   我们知道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容器的基本特性。
 
   发表时间:2011-07-31  
在我们使用的application的时候 本质上内部的BeanFatory还是DefaultListableBeanFactory这个类型,而具体的比如getBean的实现是通过AbstractAutowireCapableBeanFactory来实现的等等, 在spring的Beanfatory的家族中各个的关系很复杂 但是每一个的功能都很明确
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics