【Spring IoC容器的加载过程】

2023-11-17

  1. 加载配置文件

Spring IoC容器的配置通常以XML形式存储,并通过ResourceLoader和XmlBeanDefinitionReader类来加载。ResourceLoader主要负责加载Bean配置文件,而XmlBeanDefinitionReader则负责解析这些文件,将Bean定义封装为BeanDefinition对象。

  1. 解析和注册BeanDefinition

在加载配置文件后,XmlBeanDefinitionReader会使用BeanDefinitionParserDelegate类来解析文件中的Bean定义,并将其封装为BeanDefinition对象。这些对象会被注册到BeanDefinitionRegistry中,BeanDefinitionRegistry是一个接口,提供了向IoC容器中注册BeanDefinition的方法。

  1. 初始化BeanDefinition

在加载和解析BeanDefinition后,XmlBeanDefinitionReader会调用BeanDefinition的postProcessBeanDefinition方法,对BeanDefinition进行进一步处理。这个方法主要用于处理继承关系、AOP、注解等。例如,在处理注解时,会通过AnnotationConfigUtils类加载配置类,并向容器中注册BeanDefinition,解析其中的注解配置信息。

  1. 加载Bean

Spring IoC容器中的Bean是延迟加载的,只有在需要使用时才会被实例化。这个过程是通过Bean的getBean方法实现的。getBean方法根据Bean的名称或类型查找BeanDefinition,然后通过Bean工厂创建Bean实例。Bean工厂主要有两种:DefaultListableBeanFactory和XmlWebApplicationContext。在创建Bean实例时,DefaultListableBeanFactory会根据Bean的作用域创建对应数量的实例。Bean的作用域通常有singleton、prototype、request、session和global session等。

  1. 填充Bean属性

创建Bean实例后,Spring IoC容器会通过BeanPostProcessor接口中的postProcessPropertyValues方法来对Bean的属性进行填充。这个过程是通过PropertyValues封装Bean的属性,然后使用依赖注入技术自动填充。

  1. 初始化Bean

填充完Bean的属性后,Spring IoC容器会使用BeanPostProcessor中的postProcessBeforeInitialization方法对Bean进行预处理。然后再使用InitializingBean接口中的afterPropertiesSet方法或者配置文件中指定的init-method方法来初始化Bean。

  1. 销毁Bean

销毁Bean是Spring IoC容器的最后一个步骤,在销毁时使用DisposableBean接口中的destroy方法或者配置文件中指定的destroy-method方法来进行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Spring IoC容器的加载过程】 的相关文章

随机推荐

  • ESP8266 教程3 — 通过TCP组建局域网并通信

    目录 1 ESP8266 的 AP 模式 1 1 查询 ESP8266 的wifi应用模式 1 2 设置 ESP8266 模块的wifi信息 1 3 查询已经接入的设备 2 ESP8266 的Station 模式 2 1 设置ESP8266
  • FusionCompute8.0.0实验(1)CNA及VRM安装

    准备 1 老旧华硕笔记本电脑用于安装CNA 内存8G 硬盘1T 24G固态 i7 4500u 2核4线程 2 USB光驱 电脑上的光驱坏了 CNA不支持U盘安装 5V2A外接适配器 不能用快充 3 ultroISO破解版 4 办公笔记本 1
  • 阿里云服务器包年包月、按量和抢占式实例怎么选?区别是什么?

    阿里云服务器ECS付费类型包年包月 按量付费和抢占式实例有什么区别 包年包月先付费后使用 最低购买一个月时长 平均下来成本较低 按量付费先使用后付费 按小时结算费用 适合短期使用 平均下来费用要比包年包月贵一些 抢占式实例和按量付费相类似
  • 网站前台技术

    一 HTML5 1 历史 2 应用 html5语法 1 标签不区分大小写2 允许属性值不使用引号3 允许部分属性值的属性省略 html标记 带有 lt gt 符号的元素被称为HTML标记 也称为HTML标签或HTML元素 例如 都是HTML
  • Android选择本地视频和照片上传到服务器

    目录 照片photo 将http 本地存放照片数据库电脑ip 端口号 fileaddress png转image 一 后台发送来的数据转换Bitmap的方法 用法 二 将第一针显示出来方法 用法 视频vedio 使用选择器获取的 conte
  • rpm打包流程步骤

    rpm打包流程步骤 一 RPM简介 1 1 优点 1 2 缺点 二 前期准备 三 文件结构 3 1 各文件作用 四 打包步骤及SPEC文件的编辑 4 1 步骤 4 1 1 前期准备 4 1 2 建立相应的文件 4 1 3 将源码包放入SOU
  • 2.微服务架构组件分析

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 该系列文章来源于 学习 极客时间 从0开始学习微服务 分享之后笔记载录和读后感 作者胡忠想 微博技术专家 从 2012 年加入微博到现在 从 2012 年加入微博到现在 我
  • blender的下载安装和配置中文环境

    引言 在3D建模和动画设计领域 Blender 作为一款强大且免费的开源软件 一直以优秀的性能和对众多技术的支持赢得了大批用户的喜爱 然而 对于刚接触这款软件的用户而言 其安装和配置过程可能会带来一定困扰 尤其是在设置中文环境方面 因此 本
  • Python 爬虫初学者实战

    1 手写第一个 python 爬虫 爬虫 用程序来获取网站上的资源 常用 encoding utf 8 encoding gbk 1 导入 urllib request urlopen from urllib request import
  • Swiper 显示多行多列

    new Swiper popularity container speed 1600 autoHeight true observer true observeParents true spaceBetween 20 slidesPerVi
  • YOLOv1,v2,v3学习笔记

    YOLO学习笔记 首先我们这篇文章只写yolov1 v2 v3 至于v4我会另起一篇博文的 因为v4中用到了很多的trick和介绍了很多trick 所以我想详细介绍一下 照例 先放大佬的链接 https zhuanlan zhihu com
  • 【数字电路基础】三态门

    目录 前言 三态门 经典问题 前言 文主要讲解三态门 三态门 其模型为 其实际电路为 其真值表为 B A C 0 0 Z 0 1 Z 1 0 0 1 1 1 注意 Z是高阻 不代表没有电压 而是电压不确定 受自身 旁边cell的影响 经典问
  • multi-head attention理解加代码

    multi head attention 用于CNN相关理解 饭前小菜 在早期的Machine Translation 机器翻译 中 Attention机制与RNN的结合 机器翻译解决的是输入是一串在某种语言中的一句话 输出是目标语言相对应
  • python通过多进程加快预处理数据集的速度

    问题背景 imageNet数据集有1000个文件夹 每个文件夹是同一类的图片 大概一两千张 需要对每张图片进行预处理 把图片变成224 224像素的 这样可以加速后续程序的IO速度 同时也方便了数据集的移动 因为更小了 但是图片数量很大 全
  • 工具功能加强-对ARL的改造

    这一阵挖了不少的洞 学习到了很多的姿势 对ARL 玩的也明白了些 下面给大家介绍下如何加强你的ARL 首先不熟悉ARL的可以访问ARL的地址 GitHub TophantTechnology ARL ARL Asset Reconnaiss
  • 嘉兴职业技术学校2019分数线计算机,嘉兴职业技术学院

    序号 入围专业 分数线 1 园艺技术 131 43 2 应用电子技术 航空电子方向 130 00 3 无人机应用技术 125 14 4 物流管理 航空物流方向 133 14 5 旅游管理 文化创意与策划方向 129 14 6 酒店管理 休闲
  • Ubuntu apt update 报错APT::Update::

    E Problem executing scripts APT Update Post Invoke Success if usr bin test w var cache app info a e usr bin appstreamcli
  • 2021年开始,Adobe Flash Player 不能用了?

    WeChat 网管小贾 www sysadm cc 我们都知道 Adobe Flash Player 以下简称 Flash 是比较古老的程序了 在80 90后一代的记忆中 Flash 曾经可是火得一塌糊涂 而炙手可热的 Flash 很多人都
  • jmp address windows hook

    以下代码是sysnap早期发表的inlinehook ObReferenceObjectByHandle 的代码 大部分看懂了 但是有些看不懂 google也查了 qq群也问了 哪位高手有时间给科普下哈 可怜下偶们菜鸟吧 declspec
  • 【Spring IoC容器的加载过程】

    加载配置文件 Spring IoC容器的配置通常以XML形式存储 并通过ResourceLoader和XmlBeanDefinitionReader类来加载 ResourceLoader主要负责加载Bean配置文件 而XmlBeanDefi