面试:spring ioc实现原理

加载容器创建resource对象

首先加载一个spring的容器beanfactory,beanfactory的构造方法会创建一个实现了resource接口实例对象。resource对象通过setconfiguration()方法设置spring配置文件位置。resource对象有三种实现
分别是fileresource,url resource,classpathresource。分别获取文件,网络资源,项目路径下资源。

resource对象加载完成后,通过一个super关键字创建容器。如果有父类容器,会使用父类容器。否则新建一个容器。

提取验证模式

容器创建完成后,开始加载配置文件。beanfactory通过一个getinputstream方法拿到配置文件的输入流。在加载之前,需要验证xml的正确性和验证模式。通过解析配置的头标签。采用DTD或者xsd模式
(DTD使用其他规范或xsd(xml语法))如果不是DTD就使用xsd。

提取信息

将配置文件的信息转化为document对象。document对象负责将类信息转化为spring的特殊结构beandefintion.beandefination会保存bean的属性,是否懒加载,是否单例,是否抽象类,是否私有类等

注册

将收集到的所有bean存到一个currenthashmap中,用beanname做key,beandefintion作为value。 如果有相同的key值,并且spring不允许重名。就抛出异常。否则覆盖原来的对象

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值