當前位置:
首頁 > 知識 > 面試題:BeanFactory與FactoryBean

面試題:BeanFactory與FactoryBean

面試題:BeanFactory與FactoryBean

Spring


BeanFactory

是工廠類(介面),用於管理bean的工廠,是Spring IOC的核心,用於實例化、定位、配置對象,以及建立對象間的關係。

BeanFactory實例化Bean的過程:

1、 調用bean的默認構造方法(或指定的構造方法),生成bean1。

2、 將配置文件中配置的屬性值注入bean1,生成bean2。

3、 如bean實現了InitalizingBean介面,則執行afterPropertiesSet()方法,生成bean3。

4、 如配置文件配置了init-method屬性,則執行指定的方法,生成bean4。

構造函數-->set-->InitalizingBean#afterPropertiesSet()-->init-method


FactoryBean

通常來講,根據XML的<bean>節點中配置的class路徑,Spring可以通過反射機制來實例化。

如:

<bean id="beanA" class="org.leo.BeanA">

<property name="userName" value="leo"/>

</bean>

但實際工作中,實例化一個對象並不如此簡單。比如要在實例化的時候做一些複雜的處理。這就用上FactoryBean了。

比如最常用的Quartz框架,我們在配置調度任務的時候,配置的都是FactoryBean。

FactoryBean隱藏了許多實例化的複雜細節,方便上層調用。



如果在<bean>中配置的是FactoryBean,那麼getBean()返回的其實是FactoryBean#getObject()返回的對象。

如:

<bean id="beanA" class="org.leo.BeanAFactoryBean"/>

getBean("beanA")返回的其實是BeanAFactoryBean#getObject()返回的對象,至於是什麼,就由BeanAFactoryBean來決定了。

要想返回BeanFactory的實例,應該getBean("&beanA")。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Java個人學習心得 的精彩文章:

Fork/Join框架學習筆記(三)

TAG:Java個人學習心得 |