Spring IoC容器之BeanFactory底层实现代码解析(一)

本文深入解析Spring IoC容器中的BeanFactory,解释其实现原理,并通过代码示例展示如何创建一个简单的BeanFactory。内容涵盖BeanFactory与ApplicationContext的关系、BeanDefinition的作用以及Bean的注册和管理过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring IoC容器是一个提供IoC支持的轻量级容器,除了基本的IoC支持,它作为轻量级容器还提供了IoC之外的支持。如在Spring的IoC容器之上,Spring还提供了相应的AOP框架支持、企业级服务集成等服务。Spring的IoC容器和上节提到的IoC Service Provider 所提供的服务之间存在一定的交集。二者的关系如图:

这里写图片描述

注意:ApplicationContext间接继承自BeanFactory,所以说它是构建于BeanFactory之上的IoC容器。此外,你应该注意到了, ApplicationContext还继承了其他四个接口,图中少了一个Environment。

BeanFactory,顾名思义,就是生产Bean的工厂,作为Spring提供的基本的IoC容器,BeanFactory可以完成作为IoC Service Provider的所有职责,包括业务对象的注册和对象间依赖关系的绑定。

BeanFactory就像一个手机生产厂,你可以从其他的手机零件厂商或者你自己的零件生产部门取得汽车零件送入手机生产厂,最后只需要取出手机即可。而我们同样也是把所有的业务对象交给BeanFactory,然后直接从BeanFactory取得最终组装完成并且可用的对象,至于这个中间“生产过程”,你无需了解,这一切的一切都有BeanFactory帮你搞定!

下面就让我们从理解原理到自己用代码实现一个BeanFactory!


先说说我们的原理:

BeanFactory只是一个接口,我们最终需要一个该接口的实现来进行实际的Bean的管理DefaultListableBeanFactory就是这么一个比较通用的BeanFactory实现类。DefaultListableBeanFactory除了间接地实现了BeanFactory接口,还实现了BeanDefinitionRegistry接口,该接口才是在BeanFactory的实现中担当Bean注册管理的角色,基本上,BeanFactory接口只定义如何访问容器内管理的Bean的方法,各个BeanFactory具体实现类负责具体Bean的注册以及管理工作。BeanDefinitionRegistry接口定义抽象了Bean的注册逻辑。通常情况下,具体的BeanFactory实现类会实现这个接口来管理Bean的注册。
它们的关系如下图所示:

这里写图片描述

打个比方说,BeanDefinitionRegistry就像商店的货架,所有的商品都是放在货架上的,虽然我们买东西或者送货都是和商店(BeanFactory)打交道,但是货架才是商店存放商品的地方,所以货架相对于商店来说,就是它的BeanDefinitionRegisry。

每个受管的对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值