BeanFactory和FactoryBean的区别

352 阅读1分钟

前言: 最近在面试被问到了BeanFactory和FactoryBean的区别,虽然这是一个很基础的Spring知识点,但是作为业务开发一直很少关注这一块的内容,所以回来查阅做一些总结。

BeanFactory

首先讲一下BeanFactory的定义:
BeanFactory是接口,提供了IOC容器最基本的形式,给具体的IOC容器的实现提供了规范,是spring中比较原始的Factory。 在Spring中,所有的Bean都是由BeanFactory来进行管理的,所以BeanFactory代表IOC容器或对象工厂。 同时,Spring对BeanFactory做了很多扩展,有不同的实现,如 DefaultListableBeanFactory、XmlBeanFactory、ApplicationContext等。

从上面的定义可以知道BeanFactory是Spring里面管理Bean的容器的一种规范,它可以有不同的实现类,但是都具有统一的规范。

FactoryBean

FactoryBean的定义:
FactoryBean是接口,⽤户可以通过实现该接⼝定制实例化Bean的逻辑。 常见的FactoryBean有 ProxyFactoryBean :Aop代理Bean GsonFactoryBean:Gson

总结: 从上面的定义可以知道,BeanFactory和FactoryBean 关联性不大。BeanFactory的角色是充当容器实现的一种规范,FactoryBean则是关注Bean的创建过程,开发人员可以通过FactoryBean对Bean的实例化做定制,

参考:
juejin.cn/post/684490…
juejin.cn/post/684490…
blog.csdn.net/saienenen/a…