ioc容器的初始化

从前面的ApplicationContext的设计原理中我们可以看到,在设计原理的第一个功能之上我们能够看见refresh()方法完成了容器的初始化,这一个部分其实就是对refresh()进行完整的解析过程在refresh进行容器初始化的这个过程中其实是分为三个部分进行的:资源定位 资源的载入 将BeanDefinition注册到ioc容器中去

这三个部分其实是异步完成 通过不同的模块进行对他们处理的,例如使用ResourceLoader, BeanDifinitionReader这些模块对

  1. 第一部分:资源的定位
    从他的名字来看就是对BeanDefinition的资源定位,在Spring中他是通过ResourceLoader提供一个统一的Resource接口来完成的,这个Resourcedui各种的beandefinition使用都提供了统一的接口
    举个例子来说对文件中的BeanDifinition就可以使用FileSystemResource来对BeanDifiition来进行定位,不同的是对于类的路径可以使用ClassPathResource来对它进行定位

  2. 第二部分的: 资源的载入
    其实就是说对用户说,就是将用户定义好的bean对象表示成ioc容器的数据结构这种模式,也就是我们现在常说的BeanDifinition这样一个对象

  3. 第三部分: 资源的注册
    就是向ioc容器注册beanDifintion数据结构的过程,这个过程主要是通过BeanDefinitionRegisty接口来完成的,通过第二步的载入分析之后的BeanDifiniton向ioc容器进行注册的过程,主要的步骤就是说将这些BeanDifinition添加进入一个HashMap集合中,通过HashMap来对BeanDifinition进行管理

注意点:BeanDifinition初始化中的载入与依赖载入不是一个说法,他们是两个不同的过程
但是有一个意外就是说在对Bean实例进行设置bean的lazyinit属性,在完成初始化之前就已经对Bean进行来注入

一般我们来讲就是当容器执行了getBean()这个方法时,我们才会将Bean对象注入到
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值