spring 中 BeanFactory 和 FactoryBean 的区别

  • 这两种方式都是创建spring 的方式

FactoryBean

public class DemoFactoryBean implements FactoryBean<Model> {
    @Override
    public Model getObject() throws Exception {
        return new Model();
    }
    @Override
    public Class<?> getObjectType() {
        return Model.class;
    }
}
  • 是用这个通过getObject方法来获取bean 而这个bean 什么时候被创建,由用户自己实现,更加的灵活。

BeanFactory

  • beanFactory 是所有 spring工厂类都会去实现的一个接口,如DefaultListableBeanFactory
  • 基于BeanFactory 生产出的bean 由spring 控制其创建/销毁等。

区别

  • FactoryBean 是一个可以生产bean 的工厂类,可以理解为spring 是一个大工厂,而bean 是spring里工厂生产出来的各种组件,而FactoryBean 也可以生产各种各样的bean 并且可以控制bean的生产。
  • FactoryBean生产的bean 由程序员编写逻辑而成。而BeanFactory 由spring 控制。