BeanFactory接口:
IoC容器的頂級接口规哪,是一個工廠類,使用了簡單工廠模式熄云,負責對bean的創(chuàng)建膨更,訪問等工作。有很多的實現(xiàn)皱碘,連Spring容器ApplicationContext都是它的具體實現(xiàn)询一,ApplicationContext在繼承BeanFactory的基礎上又繼承了很多接口隐孽,進行了功能的增強癌椿。
常見使用場景:
- 從Ioc容器中獲取Bean(byName or byType) getBean()
- 檢索Ioc容器中是否包含指定的Bean containsBean()
- 判斷Bean是否為單例 isSingleton()
所以BeanFactory主要就是用來創(chuàng)建和管理bean的。
FactoryBean接口:
首先它是一個Bean菱阵,是一個能夠生產或者修飾對象的工廠Bean踢俄,通過實現(xiàn)該接口可以對bean進行一些額外的操作,是一種對于bean的增強晴及,使用了裝飾器模式和工廠模式都办。
該接口只有三個方法:
- 獲取對象實例:getObject()
- 獲取對象類型:getObjectType()
- 是否為單例模式:isSingleton() (該方法外默認方法,可以不實現(xiàn))
總結:BeanFactory是個Factory,也就是IOC容器或對象工廠琳钉,F(xiàn)actoryBean是個Bean势木。在Spring中,所有的Bean都是由BeanFactory(也就是Spring容器)來進行管理的歌懒,但對于FactoryBean來說啦桌,它不是一個簡單的Bean,而是一個能生產或修飾對象生成的工廠bean及皂。