`

Spring-Ioc容器学习笔记(未完)

 
阅读更多

 

一、Ioc容器的初始化:

 

1、Ioc容器的初始化是通过调用refesh方法来进行初始化;

 

2、Ioc容器的初始化可分为三个基本过程:

 

(1) BeanDefinition的Resource定位:

所谓的Resource定位就是找到定义bean信息的资源文件的物理位置;

(2) BeanDefinition的载入;

 

载入就是将定义好的Bean信息表示成Ioc容器内部的数据结构;

 

(3) BeanDefinition的注册;

 

这个过程是通过调用BeanDefinitionRegistry接口的实现来完成的,这个注册过程会把载入的Bean信息向Ioc容器注册,然后将bean信息存入一个Map中,作为Ioc容器持有Bean信息的缓存;

 

3、值得注意的是,在初始化中,如果对某个bean设置了lazyinit属性的话,则在初始化的过程中完成bean的载入和依赖注入;如果没有设置的话,只进行bean的载入,在第一次getBean时才会出发bean的依赖注

 

      入过程;在Spring中bean的载入和依赖注入是两个相对独立的过程。

 

二、对Ioc容器初始化的三个基本过程进行分析:(以FileSystemXmlApplicationContext容器类为例)

 

1、通过对BeanDefinition的Resource进行定位,获取IO操作对象,具体如下描述:

 

(1) 利用FileSystemXmlApplicationContext的FileSystemXmlApplicationContext(String configLocation)构造器建立FileSystemXmlApplicationContext对象时会调用refresh方法;

 

(2) 调用refresh方法中会触发refreshBeanFactory方法(此方法在AbstractRefreshableApplicationContext类中);

 

(3) 调用refreshBeanFactory方法中继续触发getResourceByPath方法(此方法在FileSystemResource类中);

 

(4) getResourceByPath方法完成后会返回一个FileSysemResource对象,此对象就是定位完成后返回的可以进行IO操作的对象。

 

2、BeanDefinition的载入和解析:

 

在完成对BeanDefinition的Resource定位分析后,下面来了解整个BeanDefinition信息的载入过程。

 

(1) 利用FileSystemXmlApplicationContext的FileSystemXmlApplicationContext(String configLocation)构造器建立FileSystemXmlApplicationContext对象时会调用refresh方法;

 

(2) 调用refresh方法中会触发createBeanFactory方法,创建一个DefaultListableBeanFactory类型的beanFactory对象;

 

(3) 创建完beanFactory对象后,调用loadBeanDefinitions方法;

 

       在loadBeanDefinitions方法中,因为之前已经初始化了一个XmlBeanDefinitionReader读取器对象,加上之前得到的代表XML文件的Resource,所以读取器可以在打开I/O流后得到XML的文件对象, 有了文件对象后,就可以按照Spring的Bean定义规则来对这个XML的文档树进行相应的解析操作。

 

(4) 调用paseBeanDefinitionElement方法对XML文件对下你给进行解析,并将解析后的数据保存在Ioc容器中的数据结构。(paseBeanDefinitionElement方法在BeanDefinitionParserDelegate类中)

 

3、BeanDefinition在IoC容器中的注册:

 

在完成对BeanDefinition的载入和解析后,就是将BeanDefinition的信息注册到一个HashMap中,完成BeanDefinition在IoC容器中的注册。

 

(1) 利用FileSystemXmlApplicationContext的FileSystemXmlApplicationContext(String configLocation)构造器建立FileSystemXmlApplicationContext对象时会调用refresh方法;

 

(2) 调用refresh方法中会触发createBeanFactory方法,创建一个DefaultListableBeanFactory类型的beanFactory对象;

 

(3) 创建完BeanFactory对象后,调用loadBeanDefinitions方法;

 

(4) 调用XmlBeanDefinitionReader中的processBeanDefinition方法,进入方法后会调用DefaultListableBeanFactory中的registerBeanDefinition方法,在此方法中就会把上一步解析出的数据结构封装到一个       HashMap中;(HashMap对象在DefaultListableBeanFactory类中,名称beanDefinitionMap)

分享到:
评论

相关推荐

    Spring5 框架 ---- IOC容器 ---- 代码

    Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- ...

    Spring-IOC笔记

    spring-IOC的一些笔记心得

    Spring-ioc-jar

    这个jar文件"Spring-ioc-jar"包含了实现Spring IOC功能所需的关键类和接口,是学习和使用Spring IOC技术的基础。 Spring框架的IOC容器是其核心组件,主要由`ApplicationContext`和`BeanFactory`两个接口代表。`...

    Spring框架-IoC容器

    Spring-IoC容器

    maven-spring-ioc

    IoC容器是Spring的核心,它负责管理对象的生命周期和对象间的依赖关系。在本教程中,我们将深入探讨Spring如何通过配置文件实现IoC。 ### 1. Spring IoC概述 IoC(Inversion of Control)是一种设计原则,它将控制...

    Spring-IoC 容器 - v1.01

    要深入理解并应用Spring的IoC容器,你需要具备Java面向对象编程的基础,了解XML配置和Spring框架的基本概念。此外,对Java集合框架、数据库操作以及设计模式有一定的理解也将非常有益。 **总结** Spring的IoC容器...

    Java-Spring-SpringIoC容器-SpringIoC的学习

    在Java Spring框架中,Spring IoC(Inversion of Control,控制反转)是核心特性之一,它使得应用程序的组件之间的依赖关系不再由代码直接管理,而是交由Spring IoC容器负责。这种设计模式降低了代码间的耦合,提高...

    spring-ioc学习

    spring-ioc学习 新手可以下过来学习下, spring-ioc简介

    Spring-ioc容器

    ioc容器的理解与使用

    Spring-IoC 复习笔记.rar

    **Spring-IoC 复习笔记** Spring 框架是 Java 开发中不可或缺的一部分,其核心特性之一就是依赖注入(Dependency Injection,简称 DI),也称为控制反转(Inversion of Control,简称 IoC)。IoC 是一种设计模式,...

    深入理解java的spring-ioc的使用.docx

    而在Spring框架中,这种职责由Spring容器接管,对象不再需要自行管理依赖项,而是将这些任务交给了Spring IoC容器。 #### 二、Spring-IoC容器的作用 1. **对象创建与管理**:Spring IoC容器负责创建对象,并在运行...

    Spring-IOC实现

    Spring IOC(Inversion of Control,控制反转)是Spring框架的核心特性,它将对象的创建和管理权交由Spring容器处理,使得开发者可以更专注于业务逻辑的编写,而不是对象的生命周期管理。下面,我们将深入探讨Spring...

    Spring-IOC实例

    Spring框架是Java开发中不可或缺的一部分,尤其在企业级应用中,其Inversion of Control(IoC)容器是其核心特性之一。IoC,也被称为依赖注入(Dependency Injection,DI),是一种设计模式,它将对象的创建和管理权...

    Spring-MVC+Spring-IOC+Spring-JdbcTemple

    标题“Spring-MVC+Spring-IOC+Spring-JdbcTemple”揭示了这个项目或教程是关于如何集成并使用Spring框架的三个核心模块:Spring MVC、Spring IOC(Inversion of Control,控制反转)以及Spring JDBC Template。...

    Spring-IOC丐版

    通过分析这个"Spring-IOC丐版"的实现,开发者可以更好地理解Spring是如何工作的,这对于深入学习Spring框架、优化自己的代码或者构建类似的轻量级容器都是非常有帮助的。同时,这也是一个很好的实践案例,可以帮助...

    2023版全新SSM框架实战精讲 视频教程 下载下载 因为太大存百度云盘3.zip

    023-spring-ioc-ioc容器的bean获取三种方式.mp4 024-spring-ioc-扩展组件周期方法.mp4 025-spring-ioc-扩展作用域配置.mp4 026-spring-ioc-扩展factoryBean使用.mp4 027-spring-ioc-三层架构组件管理介绍和...

    2023版全新SSM框架实战精讲 视频教程 下载下载 因为太大存百度云盘4.zip

    023-spring-ioc-ioc容器的bean获取三种方式.mp4 024-spring-ioc-扩展组件周期方法.mp4 025-spring-ioc-扩展作用域配置.mp4 026-spring-ioc-扩展factoryBean使用.mp4 027-spring-ioc-三层架构组件管理介绍和...

    2023版全新SSM框架实战精讲 视频教程 下载下载 因为太大存百度云盘2.zip

    023-spring-ioc-ioc容器的bean获取三种方式.mp4 024-spring-ioc-扩展组件周期方法.mp4 025-spring-ioc-扩展作用域配置.mp4 026-spring-ioc-扩展factoryBean使用.mp4 027-spring-ioc-三层架构组件管理介绍和...

    2023版全新SSM框架实战精讲 视频教程 下载下载 因为太大存百度云盘1.zip

    023-spring-ioc-ioc容器的bean获取三种方式.mp4 024-spring-ioc-扩展组件周期方法.mp4 025-spring-ioc-扩展作用域配置.mp4 026-spring-ioc-扩展factoryBean使用.mp4 027-spring-ioc-三层架构组件管理介绍和...

    Spring-IoC.rar_容器

    本文将深入探讨Spring IoC容器的工作原理、优势以及如何在实际开发中应用。 Spring IoC容器,也被称为bean工厂,是Spring框架的基础。它的主要任务是负责创建对象、管理对象之间的依赖关系,以及控制对象的生命周期...

Global site tag (gtag.js) - Google Analytics