spring FactoryBean與BeanFactory

spring FactoryBean與BeanFactory

BeanFactory,以Factory結尾,表示它是一個工廠類(接口),用於管理Bean的一個工廠。在Spring中,BeanFactory是IOC容器的核心接口,它的職責包括:實例化、
定位、配置應用程序中的對象及建立這些對象間的依賴.
FactoryBean,以bean結尾,表示它是一個bean,只不過這個bean比較特殊,它是一個接口。通過BeanFactory根據ID獲取 實現了FactoryBean接口的bean,實際上返回的不是這個bean自己,而是該bean實現的getObject()方法返回的Object。我們從代碼來驗證下。
圖1
圖2
圖三

如圖一所示,getObjectForBeanInstance()方法就是根據beanName來獲取bean實例的,在圖一中有一個判斷beanInstance是否實現FactoryBean接口,如果不是,就直接返回beanInstance。如果beanInstance實現了FactoryBean接口,則調用getObjectFromFactoryBean()方法獲取bean實例。在doGetObjectFromFactoryBean()方法裏面我們可以看到實際上返回的是beanInstance類中getObject返回的對象。這就是FactoryBean接口的作用。

總結:BeanFactory是個Factory,也就是IOC容器或對象工廠,FactoryBean是個Bean。在Spring中,所有的Bean都是由BeanFactory(也就是IOC容器)來進行管理的。但對FactoryBean而言,這個Bean不是簡單的Bean,而是一個能生產或者修飾對象生成的工廠Bean,它的實現與設計模式中的工廠模式和修飾器模式類似。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章