什么是BeanFactory? 

  BeanFactory是一种“Spring容器”,BeanFactory是Bean工厂,他可以用来创建Bean,获取Bean,BeanFactory是Spring中非常核心的组件。

BeanFactory,BeanDefinition和Bean的关系:

  BeanFactory利用BeanDefinition来生成Bean对象,BeanDefinition相当于BeanFactory的原材料,Bean对象就相当于BeanFactory所生产的产品。

BeanFactory的核心子接口和实现类: ListableBeanFactory,CofigurableBeanFactory,AutowireCapableBeanFactory,AbstractBeanFactory,DefaultListableBeanFactory(最重要)

DefaultListableBeanFactory:支持单例Bean,支持Bean别名,支持父子BeanFactory,支持Bean类型转换,支持Bean后置处理,支持FactoryBean,支持自动装配,等等。

 

什么是FactoryBean? 

  FactoryBean是spring所提供的一种较灵活的创建Bean的方式,可以通过实现FactoryBean接口的getObject()方法来返回一个对象,这个对象就是最重的Bean对象。

  FactoryBean机制被广泛的应用在Spring内部和Spring与第三方框架或组件的整合过程中。

FactoryBean接口中的方法

  objiect getObject():返回的是Bean对象

  boolean isSingleton():返回的是否是单例Bean对象

  Class getObjectType():返回的是Bean对象的类型

BeanFactory和FactoryBean的区别

  FactoryBean对象本身也是一个Bean,同时它相当于一个小型工厂,可以生产出另外的Bean。

  BeanFactory是一个spring容器,是一个大型工厂,它可以生产出各种各样的Bean。