2-IOC容器的初始化流程

news2024/11/24 11:15:55

IOC容器的初始化流程

  • AbstractApplicationContext.refresh()

    1. 准备BeanFactory(DefaultListableBeanFactory)

      设置ClassLoader

      设置Environment

    2. 扫描要放入容器的Bean,得到对应的BeanDefinition

    3. 注册BeanPostProcessor

    4. 处理国际化

    5. 处理事件多播器ApplicationEventMulticaster

    6. 启动tomcat

    7. 绑定事件监听器和事件多播器

    8. 实例化非懒加载的单例Bean

    9. 扫尾工作,比如清空实例化时占用的内存等

在这里插入图片描述

总结

问题:请聊一聊IOC容器的初始化流程

答案:

:IOC容器的初始化,核心工作是在AbstractApplicationContext.refresh()方法中完成的

:在refresh()方法中主要做了这么几件事

  1. 准备BeanFactory,在这一块需要给BeanFactory设置很多属性,比如类加载器,Environment等
  2. 执行BeanFactory后置处理器,这一阶段会扫描要放入到容器中的Bean信息,得到对应的BeanDefinition(注意:这里只是扫描,不创建)
  3. 注册Bean后置处理器,我们自定义的BeanPostProcessor就是在这一阶段被加载的,将来Bean对象实例化好后需要用到
  4. 启动tomcat
  5. 实例化容器中非懒加载的单例Bean,这里需要说的是,多例Bean和懒加载的Bean不会在这个阶段实例化,将来用到的时候再创建
  6. 容器初始化完毕后,再做一些扫尾工作,比如清除缓存等

:简单总结一下,在IOC容器的初始化过程中,首先得准备执行BeanFactory后置处理器,其次得注册Bean后置处理器,并启动tomcat,最后需要借助于BeanFactory完成Bean的实例化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1460891.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue+element (el-progress)标签 隐藏百分比(%) ,反向显示 ,自定义颜色, demo 复制粘贴拿去用

1 效果: 2 页面代码: <el-row :gutter"10" ><el-col :span"12"><el-card ><div class"fourqu"><div><span slot"title">{{推送任务TOP5}}</span></div></div><div class&…

Unity NavMesh 清除不可行走区域

通常场景中物体设置为static或Navigation Static后&#xff0c;打开Navigation使用默认设置烘焙NavMesh&#xff0c;模型顶部和底部会出现蓝色网格&#xff0c;但其中有部分属于不可能到达区域&#xff0c;如下图 本文介绍两种可去掉NavMesh中不需要网格的方法&#xff1a; 方…

K210基础实验——点亮LED灯

一、目的是点亮K210开发板左下角的LED0和LED1&#xff0c;LED0是红灯&#xff0c;LED1是绿灯&#xff0c;两颗LED灯都是低电平点亮&#xff0c;高电平熄灭。 二、这是原理图上的硬件连接&#xff0c;LED0连接的是IO0&#xff0c;LED1连接的是IO17。 三、在src目录下新建文件夹 …

适用于高云FPGA的JTAG

目标板卡&#xff1a;小梅哥芯海无涯GOWIN高云ACG525(GW5A-LV25UG324) 1.软件要求&#xff1a;必须用商业版&#xff0c;因为教育版(V1.9.9Beta-4 Education)不支持此封装的GW5A。商业版需要上网申请License&#xff0c;此处提供D4D853392AD8.lic文件&#xff08;此方法为临时…

开启智能互动新纪元——ChatGPT提示词工程的引领力

目录 提示词工程的引领力 高效利用ChatGPT提示词方法 提示词工程的引领力 近年来&#xff0c;随着人工智能技术的迅猛发展&#xff0c;ChatGPT提示词工程正逐渐崭露头角&#xff0c;为智能互动注入了新的活力。这一技术的引入&#xff0c;使得人机交流更加流畅、贴近用户需求&…

MATLAB卷积神经网络——基于ResNet-50进行图像分类

一、ResNet50工具箱安装 &#xff08;1&#xff09;下载工具箱 https://ww2.mathworks.cn/matlabcentral/fileexchange/64626-deep-learning-toolbox-model-for-resnet-50-network &#xff08;2&#xff09;在matlab打开下载的resnet50.mlpkginstall文件 &#xff08;3&…

达梦数据库--DM8两节点DSC集群安装部署(达梦数据库DSC集群搭建)

1 前期规划 系统规划 本地磁盘规划 共享存储规划 DMDSC 集群为了实现多实例同时访问和修改数据&#xff0c;需要数据文件、控制文件和日志文件都放到共享存储上。DM 支持两种共享存储&#xff0c;裸设备和 DMASM&#xff0c;裸设备是未经过格式化的特殊字符设备&#xff0c;…

Unity3d Shader篇(七)— 纹理采样

文章目录 前言一、什么是纹理采样&#xff1f;1. 纹理采样的工作原理2. 纹理采样的优缺点优点缺点 二、使用步骤1. Shader 属性定义2. SubShader 设置3. 渲染 Pass4. 定义结构体和顶点着色器函数5. 片元着色器函数 三、效果四、总结使用场景 前言 纹理采样是一种常用的图形学技…

Ubuntu 23.10:内网安装rapidocr_paddle(GPU)及其前置准备

Ubuntu 23.10&#xff1a;内网安装rapidocr_paddle&#xff08;GPU&#xff09;及其前置准备 – WhiteNights Site 标签&#xff1a;Linux, ocr, ubuntu, 系统相关 安装NVIDIA驱动、安装CUDA&&CUDNN、安装… rapidocr_paddle主要是用于ocr识别的引擎。本文主要针对于…

2024年抖店的市场已经饱和,小白不适合入局了?真实现状如下

我是王路飞。 如今的抖店&#xff0c;在整个电商行业&#xff0c;并不算是个“新人”了&#xff0c;毕竟已经上线四五年时间了。 每个项目都有自己的红利期、爆发期&#xff0c;最后基本都会进入到发展期。 抖店亦是如此&#xff0c;你要说流量红利期吧&#xff0c;确实已经…

如何选择最适合的图纸加密软件?用户体验及性价比

安秉网盾图纸加密软件是一款功能强大的图纸加密工具&#xff0c;具有以下特点和优势&#xff1a; 全盘加密&#xff1a;安秉网盾采用先进的加密算法&#xff0c;能对文件、文件夹、磁盘等数据进行全面加密&#xff0c;确保数据在存储和传输过程中的安全性。 监控与审计&#…

k-means聚类、GMM高斯聚类、canopy聚类、DBSCAN聚类、FCM聚类、ISODATA聚类、k-medoid聚类、层次聚类、谱聚类 对比

k-means聚类、GMM高斯聚类、canopy聚类、DBSCAN聚类、FCM聚类、ISODATA聚类、k-medoid聚类、层次聚类、谱聚类 对比 标 代码获取代码获取代码获取代码获取代码获取代码获取代码获取代码获取代码获取代码获取题 GMM&#xff08;高斯混合模型&#xff09;是一种聚类算法&#xff…

UE蓝图 入口(FunctionEntry)节点和源码

系列文章目录 UE蓝图 Get节点和源码 UE蓝图 Set节点和源码 UE蓝图 Cast节点和源码 UE蓝图 分支(Branch)节点和源码 UE蓝图 入口(FunctionEntry)节点和源码 文章目录 系列文章目录一、FunctionEntry节点功能二、入口节点用法1. 创建函数2. 命名函数3. 定义参数4. 编写函数逻辑5…

【Deep Learning 6】可变形卷积

&#x1f31e;欢迎来到Pytorch的世界 &#x1f308;博客主页&#xff1a;卿云阁 &#x1f48c;欢迎关注&#x1f389;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f31f;本文由卿云阁原创&#xff01; &#x1f4c6;首发时间&#xff1a;&#x1f339;2024年2月20日&a…

想了解黄金代理的资质应该看什么?

投资者要选择黄金代理为自己开户和服务&#xff0c;自然关于代理的资质是很重要的&#xff0c;那怎么判断黄金代理的资质是好是坏呢&#xff1f;下面我们就来讨论一下。我们主要可以从以下这几个方面来讨论黄金代理的资质。 首先就是黄金代理背后的黄金交易平台的牌照是什么&am…

java—泛型编程

文章目录 什么是泛型为什么需要泛型 泛型的使用泛型的上界 泛型方法的使用引出泛型方法 泛型是如何编译的擦除机制 什么是泛型 首先什么是泛型呢&#xff1f;从字面上我们可以理解为广泛的类型&#xff0c;有一定c基础的程序猿们应该了解&#xff0c;java中的泛型其实就是c的模…

C#_索引器

索引器的作用&#xff1a;令对象可像数组一般被索引 索引器 internal class TestClass {public int[] arr { 1, 2, 3, 4, 5 };public string this[int index] // 前者为返回类型&#xff0c;后者为索引类型// 返回类型代表get函数的返回值类型、set函数的value类型&#xff0…

java 使用documents4j将XML转为pdf文件的方式

1.背景&#xff1a; 通过spire.doc.free将word转换成PDF时存在缺陷&#xff1a;只能获取前3页。获取全文另外需支付费用。 2.解决办法 使用documents4j&#xff0c;documents4j会保留原word文件中更多的样式&#xff0c;如修订模式下的差异化字体颜色、文档右侧修订记录等。 …

PHP实践:Laravel中事件使用讲解

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌&#xff0c;CSDN博客专家&#xff0c;阿里云社区专家博主&#xff0c;2023年6月CSDN上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师…

js设计模式:适配器模式

作用: 可以将某种不同格式的数据转化为自己所期待的数据格式 或者对于一些存在兼容或者特殊处理的业务逻辑,可以进行一个适配 示例: //原始数据let oldData1 [{name: 王惊涛,age: 29},{name: 孙悟空,age: 800},{name: 嘉文四世,age: 27},{name: 关羽,age: 40},{name: 伊利丹…