首先,明确的是这两个都是接口,并且是两个完全不一样的接口。

BeanFactory

  • BeanFactory是Spring容器的核心接口,ApplicationContext继承了它,它是Spring的门面。
  • BeanFactory属于Spring的核心组件、核心类,给容器提供了规范、基本形式。
  • BeanFactory是一个工厂,spring中的所有类都是通过BeanFactory工厂实现类创建和管理的。

    FactoryBean

  • FactoryBean是一个特殊的Bean,一个工厂bean(可以用于生产和修饰对象的bean)。

  • 当BeanFactory的子类的getBean()时,发现要创建的bean是一个FactoryBean时,不会创建这个bean,而是创建FactoryBean中getObject()方法要返回的对象。如果想要创建这个工厂bean,需要在getBean()方法参数中加上&符号,getBean(“&对象名”)