bean的加载

56 篇文章 0 订阅
34 篇文章 0 订阅
bean的加载过程比bean的解析复杂的多,主要是AbstractBeanFactory下面的doGetBean方法实现

1、转换对应的beanName

传入的参数可能是bean的别名,也可能是FactoryBean,所以需要在这里转换


2、尝试从缓存中加载单例

单例在容器中只会创建一次,后面直接获取bean就行了,首先尝试从缓存中拿,如果不成功就从singletonFactories,因为创建单例存在依赖注入,为了避免循环依赖,在bean没有创建完成时就创建bean的ObjectFactory加到缓存,依赖直接使用ObjectFactory就可以了

3、bea的实例化

从第二步缓存哪里拿到bean的原始状态,需要对bean实例化

4、原型模式的依赖检查

只有在单例才会解决的循环依赖

5、检测parentBeanFactory

如果加载的XML配置文件中不报航beanNane的配置,则需要到parentBeanFactory,然后在递归调用getBean

6、将配置文件的GernericBeanDefinition转换为RootBeanDefinition

xml读取的信息都是存储在GernericBeanDefinition里面,但后面的bean处理都是针对RootBeanDefinition,所以要在这里处理

7、寻找依赖

bean在初始化的过程中很可能用到某些属性,有可能是动态配置的,可能依赖其它的bean,在初始化bean的时候会先初始化依赖的bean

8、针对不同的scope进行bean的创建


9、类型转换

转换成指定类型


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值