beanfactory和factorybean的区别是什么?
1、定义不同
BeanFactory是个Factory,也就是IOC容器或对象工厂。
FactoryBean是个Bean。
2、作用不同
BeanFactory以Factory结尾,表示它是一个工厂类(接口), 它负责生产和管理bean的一个工厂。
FactoryBean它是实现了FactoryBean<T>接口的Bean,根据该Bean的ID从BeanFactory中获取的实际上是FactoryBean的getObject返回的对象。
总之,BeanFactory是接口,提供了IOC容器最基本的形式,给具体的IOC容器的实现提供了规范。FactoryBean也是接口,为IOC容器中Bean的实现提供了更加灵活的方式,FactoryBean在IOC容器的基础上给Bean的实现加上了一个简单工厂模式和装饰模式。
beanfactory和factorybean的职责:
1、BeanFactory
在Spring中,BeanFactory是IOC容器的核心接口,它的职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。
BeanFactory只是个接口,并不是IOC容器的具体实现,但是Spring容器给出了很多种实现,其中XmlBeanFactory就是常用的一个,该实现将以XML方式描述组成应用的对象及对象间的依赖关系。
2、factorybean
FactoryBean的工厂类接口,用户可以通过实现该接口定制实例化Bean的逻辑。FactoryBean接口对于Spring框架来说占用重要的地位,Spring自身就提供了70多个FactoryBean的实现。
它们隐藏了实例化一些复杂Bean的细节,给上层应用带来了便利。