Spring 之BeanFactory(转)

 BeanFactorySpring的“心脏”。它就是Spring IoC容器的真面目。

Spring使用BeanFactory实例化、配置和管理Bean。但是,在大多数情况我们并不直接使用BeanFactory,而是使用ApplicationContext。它也是BeanFactory的一个实

现,但是它添加了一系列“框架”的特征,比如:国际化支持、资源访问、事件传播等。



                                                

 

 

 

        BeanFactory其实是一个接口-org.springframework.beans.factory.BeanFactory,它可以配置和管理几乎所有的Java类。当然,具体的工作是由实现BeanFactory接口

的实现类完成。我们最常用的
BeanFactory实现是org.springframework.beans.factory.xml.XmlBeanFactory。它从XML文件中读取Bean的定义信息。当BeanFactory被创建

时,
Spring验证每个Bean的配置。当然,要等Bean创建之后才能设置Bean的属性。单例(Singleton)Bean在启动时就会被BeanFactory实例化,其它的Bean在请求时创建。根

BeanFactoryJava文档(Javadocs)介绍,“Bean定义的持久化方式没有任何的限制:LDAPRDBMSXML、属性文件,等等”。现在Spring已提供了XML文件和

属性文件的实现。无疑,
XML文件是定义Bean
的最佳方式。


BeanFactory是初始化Bean和调用它们生命周期方法的“吃苦耐劳者”。注意,BeanFactory只能管理单例(SingletonBean的生命周期。它不能管理原型(prototype,非单

)Bean的生命周期。这是因为原型Bean实例被创建之后便被传给了客户端,
容器失去了对它们的引用。


BeanFactory管理Bean(组件)的生命周期

    

   
     下图描述了
Bean的生命周期。它是由IoC容器控制。IoC容器定义Bean操作的规则,即Bean的定义(BeanDefinition)。Bean的定义包含了BeanFactory在创建Bean

例时需要的所有信息。
BeanFactory首先通过构造函数创建一个Bean实例,之后它会执行Bean实例的一系列之前初始化动作,初始化结束Bean将进入准备就绪(ready

状态,这时应用程序就可以获取这些
Bean实例了。最后,当你销毁单例(SingletonBean时,它会调用相应的销毁方法,结束Bean实例的生命周期。

 

 

 

 转自:http://www.blogjava.net/yejiansuo/archive/2010/10/18/335442.html

posted @ 2013-06-25 15:38  冰雪柔情的天空  阅读(195)  评论(0编辑  收藏  举报