spring-类加载源码解析

本文通过汽车制造类比Spring框架中的Bean加载流程,详细解释了BeanDefinition的解析、存储及Bean对象的创建过程。

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

汽车类比

汽车的生产流程大概是这样的,在生产汽车之前先有汽车的图纸,再根据图纸把各个零件组装成汽车,然后把组装完的汽车发往各地的进行贩卖。
小时打算买辆大指挥官,然后就去4s店问,人家说还没造出来呢,得先等造出来。我问他图纸有了吗,他们说有了,正在组装呢,那我就先等着吧。
其实spring的bean加载过程跟汽车的工厂差不多。
我们根据汽车,看spring的bean加载的流程,其中有几个关键词,图纸,组装,存储。

图纸的数字化

图纸,这个图纸就相当于咱们的xml文件,汽车的图纸里边有各个零件的参数,比如发动机是什么样的,spring的图纸里边的则是标签, 等标签的配置。一张图纸用起来不方便,能不能把图纸进行数字化的管理并存储起来呢,当然是可以的,那就定义一个图纸存储的规范吧,spring就定义的存储的规范就是BeanDefinition,图纸的类型有很多,为了将图纸转化为数字化的规范得需要一些工具,为这些工具也定义一些规范吧,这些规范就是BeanDefinitionParser。那数字化的内容存在哪里呢,的有个存储的地方吧,这个地方就是BeanDefinitionRegistry,以后直接从BeanDefinitionRegistry中取岂不是很方便。
这个流程相对于BeanDefinition的解析流程。

汽车的生产

小时现在要买一辆车(获取一个bean对象),工作人员问我想买什么样的车,先去工厂里瞅瞅,这个工厂就是spring的BeanFactory了,我说想去看看汽车是怎么造出来的个,工作人员说既然想来,那就带你看看吧。
我跟他说我是来买车的不是来租车的,给我一辆永久的就可以,他先到factoryBeanObjectCache中帮我看了看,说我的车没有库存,那就的先造车。
他从BeanDefinitionRegistry中找出了我的车的BeanDefinition,看了看这辆车是否是代工(代理),如果是的话就让代工来做,不是的话就自己做了。他们做的挺先进的,找了一个机器人BeanWrapper,用机器根据BeanDefinition的属性进行装配,如果有的零件(BeanDefinition相应的属性)没有的话就先把相应的零件造出来,一会就把车造出来了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值