关于FactoryBean 和BeanFactory
在Spring 中,有兩個(gè)很容易混淆的類:BeanFactory 和FactoryBean。
BeanFactory:Bean 工廠,是一個(gè)工廠(Factory),我們Spring IOC 容器的最頂層接口就是這個(gè)BeanFactory,它的作用是管理Bean,即實(shí)例化、定位、配置應(yīng)用程序中的對(duì)象及建立這些對(duì)象間的依賴。
FactoryBean:工廠Bean,是一個(gè)Bean,作用是產(chǎn)生其他bean 實(shí)例。通常情況下,這種Bean 沒(méi)有什么特別的要求,僅需要提供一個(gè)工廠方法,該方法用來(lái)返回其他Bean 實(shí)例。通常情況下,Bean 無(wú)須自己實(shí)現(xiàn)工廠模式,Spring 容器擔(dān)任工廠角色;但少數(shù)情況下,容器中的Bean 本身就是工廠,其作用是產(chǎn)生其它Bean 實(shí)例。
當(dāng)用戶使用容器本身時(shí),可以使用轉(zhuǎn)義字符”&”來(lái)得到FactoryBean 本身,以區(qū)別通過(guò)FactoryBean產(chǎn)生的實(shí)例對(duì)象和FactoryBean 對(duì)象本身。在BeanFactory 中通過(guò)如下代碼定義了該轉(zhuǎn)義字符:String FACTORY_BEAN_PREFIX = "&";
如果myJndiObject 是一個(gè)FactoryBean,則使用&myJndiObject 得到的是myJndiObject 對(duì)象,而不是myJndiObject 產(chǎn)生出來(lái)的對(duì)象。
?
?
總結(jié)
以上是生活随笔為你收集整理的关于FactoryBean 和BeanFactory的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: DefaultListableBeanF
- 下一篇: FactoryBean 源码