美文网首页SpringFramework
Spring 是如何启动应用程序的?

Spring 是如何启动应用程序的?

作者: OldChicken_ | 来源:发表于2018-11-06 20:24 被阅读2次

使用Spring框架编写应用程序之所以很简单,是因为有Spring容器帮程序员处理了大量繁琐的过程,可以说Spring 容器是 Spring 框架的核心。

Spring容器的具体工作包括:

  • 将Beans对象通过IoC实例化。
  • 按照用户的配置文件(如spring-application.xml文件)配置Beans。
  • 组织到应用程序中的具体实现。
  • 销毁Beans。
Spring容器

Spring容器的具体工作包括以下几项:

Spring IoC 容器创建

步骤:

  1. 容器帮我们创建启动ApplicationContext 工厂。对应源码
  2. 将配置的内容(如 spring-application.xml)给ApplicationContext 工厂。对应源码
    a. 调用父类容器的构造方法(super(parent)方法)为容器设置好Bean资源加载器
    b. 调用父类的setConfigLocations(configLocations)方法设置Bean定义资源文件的定位路径
    c. 调用父类的refresh()函数启动整个IoC容器对Bean定义的载入过程对应源码

经过对 Spring Bean 定义资源文件转换的 Document 对象中的元素层层解析,Spring IoC 现在已经将 XML 形式定义的 Bean 定义资源文件转换为 Spring IoC 所识别的数据结构——BeanDefinition。它是 Bean 定义资源文件中配置的 POJO 对象在 Spring IoC 容器中的映射,我们可以通过 AbstractBeanDefinition 为入口,向 IoC 容器进行索引、查询和操作。

Spring IoC 容器依赖注入配置信息解析注册

步骤:

  1. 向容器注册Bean定义信息

至此,Bean 定义资源文件中配置的 Bean 被解析过后,已经注册到 IoC 容器中,被 Spring 容器管理起来,真正完成了 IoC 容器初始化所做的全部工作。现 在 IoC 容器中已经建立了整个 Bean 的配置信息,这些 BeanDefinition 信息已经可以使用,并且可以被检索,IoC 容器的作用就是对这些注册的 Bean 定义信息进行处理和维护。这些的注册的 Bean 定义信息是 IoC 容器控制反转的基础,正是有了这些注册的数据,容器才可以进行依赖注入。

Spring IoC 容器依赖注入

步骤:

  1. 生成 Bean 所包含的 Java 对象实例(这里是原始对象)。createBeanInstance
  2. 对 Bean 属性的依赖注入进行处理。populateBean
    a. 对原始对象的属性的注入过程
    b. 注入过程中解析属性值

Ref:
https://gitbook.cn/books/5ba0e192f4ce951299b4eeea/index.html

相关文章

网友评论

    本文标题:Spring 是如何启动应用程序的?

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