前言: 最近在面试被问到了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…