美文网首页Java相关
Spring - IOC实现

Spring - IOC实现

作者: 万福来 | 来源:发表于2020-04-11 12:02 被阅读0次

    在Spring IOC容器的设计中,有两个主要的容器系列,一个是是实现了BeanFactory接口的简单容器系列;
    这系列容器只实现了容器的最基本功能;另一个是ApplicationContext应用上下文,它是容器的高级形态,应用上下文在简单容器的基础上,增加了许多面向框架的特性,同时对应用环境做了许多适配。

    IOC容器的工作原理

    • BeanDefiniton定位。对于IOC容器来说,它为管理对象之间的依赖关系提供了帮助;
      第一步就是使用Resource接口来统一定位这些BeanDefinition资源,常用的有XML文件配置信息;

    • 容器的初始化。在使用上下文时,需要一个初始化的过程,这个过程的入口实在refresh中实现的,
      初始化过程最重要的就是对步骤一中的BeanDefintion资源进行载入,解析和注册操作,其实就是将BeanDefinition资源转化为容器中的一个HashMap结构进行存储,方便后续的管理和维护。

    在容器初始化操作完成后,IOC容器就可以对外使用了,但这时IOC容器内部只是维护了BeanDefinition,
    还没有生成具体的Bean和依赖注入。

    依赖注入的工作原理

    在客户第一次向容器getBean时,IOC容器就会对相关Bean依赖关系进行注入,如果涉及到的依赖关系也没有初始化完成,则容器会直接递归调用getBean直到该Bean所有的依赖Bean都初始化后,所有的依赖对象注入完成后,然后将创建好的Bean返回给客户。
    如果Bean配置的lazy-init=false,则会在容器初始化之后,直接遍历所有的BeanDefinition判断lazy-init属性值,如果没有启用懒加载,则直接触发getBean方法,在容器初始化完成后,直接加载这些Bean。

    相关文章

      网友评论

        本文标题:Spring - IOC实现

        本文链接:https://www.haomeiwen.com/subject/nhtymhtx.html