參考:BeanFactory 和 FactoryBean? ?
一:簡(jiǎn)單的說(shuō)
?BeanFactory 是接口,提供了IOC容器最基本的形式,給具體的IOC容器的實(shí)現(xiàn)提供了規(guī)范。
? ? FactoryBean 也是接口,為IOC容器中Bean的實(shí)現(xiàn)提供了更加靈活的方式,F(xiàn)actoryBean在IOC容器的基礎(chǔ)上給Bean的實(shí)現(xiàn)加上了一個(gè)簡(jiǎn)單的工廠模式和裝飾模式 ,我們可以在getObject()方法中靈活配置.
? ? ? ?區(qū)別:BeanFaactory 是哥Factory,也就是IOC容器或?qū)ο蠊S,F(xiàn)actoryBean是個(gè)Bean.在Spring中,所有的Bean都是由BeanFactory(也就是IOC容器)來(lái)進(jìn)行管理的。但對(duì)FactoryBean而言,這個(gè)Bean不是簡(jiǎn)單的Bean,而是一個(gè)能生產(chǎn)或者修飾對(duì)象生成的工廠Bean,它的實(shí)現(xiàn)與設(shè)計(jì)模式中的工廠模式和修飾器模式類似 .
二:復(fù)雜的說(shuō)
BeanFactory:
1:負(fù)責(zé)生產(chǎn)和管理bean的一個(gè)工廠。
2:事IOC容器的核心接口,它的職責(zé)包括:實(shí)例化、定位、配置應(yīng)用程序中的對(duì)象及建立這些對(duì)象的依賴。
3:多種實(shí)現(xiàn):如?DefaultListableBeanFactory、XmlBeanFactory、ApplicationContext等,其中XmlBeanFactory就是常用的一個(gè),該實(shí)現(xiàn)將以XML方式描述組成應(yīng)用的對(duì)象及對(duì)象間的依賴關(guān)系。
?FactoryBean
?? ?FactoryBean是一個(gè)接口,當(dāng)在IOC容器中的Bean實(shí)現(xiàn)了FactoryBean后,通過(guò)getBean(String BeanName)獲取到的Bean對(duì)象并不是FactoryBean的實(shí)現(xiàn)類對(duì)象,而是這個(gè)實(shí)現(xiàn)類中的getObject()方法返回的對(duì)象。要想獲取FactoryBean的實(shí)現(xiàn)類,就要getBean(&BeanName),在BeanName之前加上&。