首页 > 其他分享 >说说IoC 容器的初始化过程

说说IoC 容器的初始化过程

时间:2023-06-25 20:31:54浏览次数:32  
标签:初始化 Resource 容器 IOC Bean IoC BeanDefinition

  IoC(Inversion of Control),即控制反转,         

  spring通过IoC容器创建bean并维护bean之间的关系。

 1.Resource 定位:

   我们一般使用外部资源来描述 Bean 对象,所以 IOC 容器第一步就是需要定位 Resource 外部资源 。Resource 的定位其实就是 BeanDefinition 的资源定位,它是由 ResourceLoader 通过统一的 Resource 接口来完成的,这个 Resource 对各种形式的 BeanDefinition 的使用都提供了统一接口 。

 2.载入:

   第二个过程就是 BeanDefinition 的载入 ,BeanDefinitionReader 读取 , 解析 Resource 定位的资源,也就是将用户定义好的 Bean 表示成 IOC 容器的内部数据结构也就是 BeanDefinition, 在 IOC 容器内部维护着一个 BeanDefinition Map 的数据结构,通过这样的数据结构, IOC 容器能够对 Bean 进行更好的管理 。 在配置文件中每一个都对应着一个 BeanDefinition 对象 。

3.注册:

   第三个过程则是注册,即向 IOC 容器注册这些 BeanDefinition ,这个过程是通过 BeanDefinitionRegistery 接口来实现的 。

上面提到的过程一般是不包括Bean的依赖注入的实现。在Spring中,Bean的载入和依赖注入是两个独立的过程。依赖注入一般发生在应用第一次通过getBean向容器索取Bean的时候。

标签:初始化,Resource,容器,IOC,Bean,IoC,BeanDefinition
From: https://blog.51cto.com/u_15558311/6548304

相关文章

  • IOC之依赖注入和控制反转
    依赖注入(DI,DependencyInjection)是IoC的一种实现方式,它指的是将一个对象作为参数传入另外一个对象(或者通过接口的方式注入),以实现这个对象之间的依赖关系。这种方式让被注入对象不需要关心自己依赖的其他对象的实现细节,从而实现松耦合。控制反转(IoC,InversionofControl),是一种设计......
  • 构建高可用性的 SQL Server:Docker 容器下的主从同步实现
    摘要:本文将介绍如何在Docker环境下搭建MSSQLServer的主从同步,帮助读者了解主从同步的原理和实现方式,进而提高数据的可靠性和稳定性。一、前言在当今信息化的时代,数据的安全性和稳定性显得尤为重要。数据库是许多企业和组织存储和管理数据的核心,因此如何保证数据库的高可用......
  • 构建高可用性的 SQL Server:Docker 容器下的主从同步实现
    摘要:本文将介绍如何在Docker环境下搭建MSSQLServer的主从同步,帮助读者了解主从同步的原理和实现方式,进而提高数据的可靠性和稳定性。一、前言在当今信息化的时代,数据的安全性和稳定性显得尤为重要。数据库是许多企业和组织存储和管理数据的核心,因此如何保证数据库的高可用性......
  • 容器日志收集与管理:让日志无处可逃
    本文将详细介绍Kubernetes里对容器日志的处理方式。首先需要明确,Kubernetes里对容器日志的处理方式都叫作cluster-level-logging,即这个日志处理系统与容器、Pod以及节点的生命周期都完全无关。这种设计当然是为了保证无论容器不工作、Pod被删除,甚至节点宕机,依然可以正常获取......
  • Tensorflow整理[11]. 变量创建初始化保存加载
    变量:创建、初始化、保存和加载当训练模型时,用变量来存储和更新参数。变量包含张量(Tensor)存放于内存的缓存区。建模时它们需要被明确地初始化,模型训练后它们必须被存储到磁盘。这些变量的值可在之后模型训练和分析是被加载。描述以下两个TensorFlow类。点击以下链接可查看完整的......
  • 容器基础-- namespace,Cgoup 和 UnionFS
    Namespace什么是Namespace?这里的"namespace"指的是Linuxnamespace技术,它是Linux内核实现的一种隔离方案。简而言之,Linux操作系统能够为不同的进程分配不同的namespace,每个namespace都具有独立的资源分配,从而实现了进程间的隔离。如果你的Linux安装了GCC,可以通过......
  • 查找容器网卡对应的宿主机veth
    dockerrun-dnginx:1.91.容器内查看网卡索引值dockerexec-it2740f92cat/sys/class/net/eth0/iflink2.根据网卡索引值查找系统网卡ipa|grep"7:"......
  • python入门(六):数据结构和容器
    Python数据结构和容器指南原文|大纲|首页在Python中,数据结构和容器用于存储和组织数据。它们提供了不同的方式来操作和访问数据,以满足不同的需求。了解Python的数据结构和容器对于编写高效和灵活的代码至关重要。列表(List)列表是Python中最常用的数据结构之一。它是一个......
  • 【set容器】
    set定义set又名集合,是一种内部自动排序、且不含重复元素的容器●有序●去重遍历只能用迭代器遍历#include<set>#include<cstdio>usingnamespacestd;intmain(){set<int>st;for(inti=6;i>0;i--){st.insert(i);}for(s......
  • python学习日志,五大容器的比较
    列表的使用:列表.append(元素):向列表中追加一个元素列表.extend(容器):将数据容器的内容依次取出,追加到列表尾部列表.insert(下标,元素):在指定下标处,插入指定的元素del列表[下标]:删除列表指定下标元素列表.pop(下标):删除列表指定下标元素列表.remove(元素):从前向后,翻除此......