首页 > 编程语言 > 详细

Spring扩展——BeanFactory和FactoryBean

时间:2021-04-01 23:26:46      阅读:29      评论:0      收藏:0      [点我收藏+]

BeanFactory和FactoryBean

BeanFactory和FactoryBean长得很相似,也很容易让我们产生误解,特别是对于初学者而言,搞懂他俩关系非常有必要,因为这两个接口,是Spring框架中非常重要的两个接口,也是很多同鞋在面试中经常被问到的问题

BeanFactory(bean工厂)

BeanFactory是Spring IOC容器中最基本的容器接口,负责生产和管理bean,它为其他具体的IOC容器提供了最基本的规范,这当然也是Spring框架提供给我们日常开发最重要的一点,Spring框架通过BeanFactory来管理整个bean对象的生命周期,包括bean对象的实例化、初始化、销毁等等过程,也很好的为我们解决了Bean对象之间的相互依赖关系,提供多种属性注入的配置方式。
技术分享图片

在Spring中还有一个非常重要的接口,ApplicationContext,Spring用它管理整个上下文,而通过阅读源码我们发现,在Spring中的ApplicationContext接口的具体实现类里面,有一个成员变量BeanFactory,我们通过ApplicationContext.getBean的方式来获取的bean对象的时候,实际上是把它交给了BeanFactory来间接获取的。

技术分享图片

实际上我们可以这么理解,Spring通过BeanFactory来为我们管理Bean对象的生命周期,而Spring的ApplicationContext为我们的容器提供一个可靠的运行环境。
所以Spring的容器启动,可以简单地分为以下几个步骤

  1. ApplicationContext环境的准备;
  2. Bean容器的准备;
  3. 通过配置文件获取bean对象的定义信息;
  4. 将Bean定义信息注册到Bean容器中,也就是我们说的BeanFactory;
  5. 由BeanFactory创建bean对象,并管理bean对象(实例化、初始化、依赖注入等);

当然这中间还有许多的操作。
上面我们说过BeanFactory为我们的bean容器提供了管理Bean对象时最基本的规范,包括bean对象的实例化、初始化、属性注入、后置处理、销毁等等操作。在我们通过ApplicationContext.getBean方法获取bean对象的时候,我们发现实际它是交由BeanFactory来获取的。

实际上,为了加快速度getBean获取bean的速度,BeanFactory的实现类里面为我们提供了多种缓存。比如对于我们单例bean对象,在第一次创建成功后,就会将它放入BeanFactory的Map缓存里面,以便于后期再获取的时候,能够保证获取到的是同一对象,也就保证了bean的单例性。

Spring扩展——BeanFactory和FactoryBean

原文:https://www.cnblogs.com/yanchuanbin/p/14608300.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!