Spring 容器创建初始化,获取bean流程分析

news2024/11/25 9:47:02

Spring 容器创建初始化,获取bean流程分析

Spring 容器创建初始化 流程分析

1、首先读取bean.xml 文件

在这里插入图片描述

2、扫描指定的包 com.hspedu.spring.component

在这里插入图片描述

2.1、扫描包,得到bean的class对象,排除包下不是bean的
2.2、扫描将bean信息封装BeanDefinition对象,并放入到Map中
2.3、初始化单例池也就是如果bean是单例的就实例化,并放入到单例池Map

3、经过前面3步之后,在Spring容器内就会得到两个非常重要的集合

在这里插入图片描述

3.1、BeanDefinition Map集合

放BeanDefinition 对象,就是存放bean的信息
key[beanName] ,value就是把我们扫描到的信息放到BeanDefinition对象中

3.2、单例Bean Map 集合-单例池

key就是beanName,value就是单例Bean对象

Spring 容器getBean(name)实现机制

1、执行getName(name)

在这里插入图片描述

在执行getName(name)的时候,首先到BeanDefinition Map集合获取bean的信息
在这里插入图片描述

  • 如果这个bean不存在,就抛异常
  • 如果这个bean是singleon,从单例Bean Map集合-单例池,获取即可
  • 如果这个bean是prototype,就从BeanDefinition Map集合中得到Bean的Class对象,使用反射创建Bean并返回

最后实现Spring的扩展功能

在这里插入图片描述

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

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

相关文章

python之selenium库安装及用法(定位法、获取文本、文本框输入、鼠标点击、滑动滚动条)

一、selenium库安装 pip install selenium二、浏览器驱动安装 谷歌浏览器驱动下载地址:https://chromedriver.storage.googleapis.com/index.html 根据你电脑的谷歌浏览器版本,下载相应的就行。我下载的是110.0.5481.XX中的chromedriver_win32.zip 下载…

无公网IP快解析实现U+随时随地访问

现阶段商品从生产到消费者手中要经过多个环节,为实现对每一个环节进行管理,越来越多的企业选择通过信息化手段来实现。供应链管理系统配合供应链中各实体的业务需求,使操作流程和信息系统紧密配合,做到各环节无缝链接,…

【C++】string类的使用

目录 一、标准库中的string类 二、string类的常用接口 1、string类对象的常见构造 2、string类对象的容量操作 2.1、size 与 length 2.2、capacity 与 reserve 2.3、resize 2.4、总结 3、string类对象的访问及遍历操作 3.1、operator[] 与 at 3.2、begin end 3.3、…

Portraiture5人像磨皮润色修饰插件

Portraiture3和Portraiture4这两个版本大家用的比较多,那是因为这两个版本是中文比较全的版本。portraiture是一款强大的64位PS磨皮滤镜,利用该PS滤镜插件可以对图片中的人物进行润色,磨皮等操作,处理皮肤材质、头发等。帮您消除了…

HNU工训中心:平台 2HDL 语言与验证实验报告

一、自定 FSM 说明 1、状态描述 State0:睡觉,如果闹钟响则起床吃早餐,否则继续睡觉 State1:吃早餐,吃完去上课 State2:上课,上完课后如果要开会就去开会,否则去自习 State3&…

LiveGBS国标GB/T28181视频流媒体平台-功能视频集中录制存储云端录像H264|H265|HEVC视频存储

LiveGBS国标GB/T28181视频流媒体平台-视频集中录制存储云端录像H264|H265|HEVC视频存储1、云端录像存储2、手动配置录像2.1、按需录像2.2、一直录像3、录像计划3.1、录像计划入口3.2、新增录像计划3.3、编辑录像计划3.4、关联通道4、查看云端录像4.1、查看录像4.1.1、时间轴模式…

vue路由文件拆分管理

随着项目的原来越大,路由越来越多,我们的路由也会越来越多,如果都集中在一个文件中,会很冗杂文件很长。这时候我们可以将路由文件拆分,可读、方便管理。多人合作添加路由也能更多的避免代码冲突 代码拆分目录如图&…

18 客户端服务发现源码分析

Nacos客户端服务发现源码分析 总体流程 首先我们先通过一个图来直观的看一下,Nacos客户端的服务发现,其实就是封装参数、调用服务接口、获得返回实例列表。 但是如果我们要是细化这个流程,会发现不仅包括了通过NamingService获取服务列表&…

运筹系列79:使用Julia进行column generation求解

1. 案例建模 我们对cutting stock问题进行建模。rolls的尺寸为W,每个型号的需求量和尺寸分别为d和w,如下: struct Piecew::Float64d::Int endstruct Datapieces::Vector{Piece}W::Float64 endfunction Base.show(io::IO, d::Data)println(i…

hls.js如何播放m3u8文件(实例)?

HLS(HTTP Live Streaming)是一种视频流传输协议,是苹果推出的适用于iOS与macOS平台的流媒体传输协议。它将视频分割成若干个小段,每个小段大小一般为2~10秒不等,并通过HTTP协议进行传输。通过在每个小段之间插入若干秒…

C++学习笔记-多线程

传统的C&#xff08;C11之前&#xff09;中并没有引入线程这个概念&#xff0c;在C11出来之前&#xff0c;如果我们想要在C中实现多线程&#xff0c;需要借助操作系统平台提供的API&#xff0c;比如Linux的<pthread.h>&#xff0c;或者windows下的<windows.h> 。 …

数据结构——链表讲解(1)

作者&#xff1a;几冬雪来 时间&#xff1a;2023年3月3日 内容&#xff1a;数据结构链表讲解 目录 前言&#xff1a; 链表的概念&#xff1a; 1.为什么要有链表&#xff1a; 2.链表的运行原理&#xff1a; 3.链表的形态多少&#xff1a; 4.单链表的代码书写&#xff1…

QML定时器

QML使用Timer使用定时器 Timer 计时器可用于触发操作一次&#xff0c;或以给定的间隔重复触发。 常用属性&#xff1a; interval 设置触发器之间的间隔&#xff08;以毫秒为单位&#xff09;。 默认间隔为 1000 毫秒。 repeat 设置重复&#xff0c;为真&#xff0c;则以指定的…

【力扣】stack容器的探索之有效的括号

作者&#xff1a;狮子也疯狂 专栏&#xff1a;《算法详解》 愿你生如夏花之绚烂&#xff0c;幸运永远与你相伴&#xff0c;疯狂常在。 目录一. &#x1f981; Stack容器的来历1.1 操作栈的方法二. &#x1f981; Stack的使用2.1 题目2.2 分析2.3 详细算法实现2.4 力扣AC截图三…

vscode与C++安装与使用【不好用来骂我】

网上教程很多&#xff0c;但是都不太好用&#xff0c;这是我垃圾堆里淘金淘出来的教程&#xff1a; 安装软件 安装 Visual Studio Code: 你需要下载并安装 Visual Studio Code&#xff0c;可以在官网下载 https://code.visualstudio.com/download。 安装 C 扩展: 在 Visual S…

【基础算法】单链表的OJ练习(2) # 链表的中间结点 # 链表中倒数第k个结点 #

文章目录前言链表的中间结点链表中倒数第k个结点写在最后前言 对于单链表的OJ练习&#xff0c;需要深刻理解做题的思路&#xff0c;这样我们才能够在任何场景都能够熟练的解答有关链表的问题。 关于OJ练习&#xff08;1&#xff09;&#xff1a;-> 传送门 <-&#xff0c…

支持向量机简单介绍

1.概述 支持向量机&#xff08;SVM&#xff0c;支持向量网络&#xff09;&#xff0c;是机器学习中获得关注最多的算法没有之一。它源于统计学习理论。 | | | 功能有监督学习线性二分类与多分类&#xff08;Linear Support Vector Classification&#xff09;非线性二分类与多…

你真的会用三元运算符吗?

在我们日常搬砖中&#xff0c;我们经常会看到三元运算符&#xff0c;但是你了解三元运算符到底是怎么用吗&#xff1f;接下来我们就下来详细介绍一下三元运算符大厂面试题分享 面试题库前后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★地址&#x…

职场人必备的6款实用办公app,每一款都是心头爱

打工人不容易啊&#xff0c;不提高工作效率怕是要被淘汰了。今天给大家分享6款职场人必备的实用办公APP&#xff0c;免费效率神器让工作事半功倍。这些APP每一款都是我的心头爱&#xff0c;肯定会让人大开眼界的&#xff0c;超级实用&#xff0c;直接往下看吧。1、向日葵远程控…

docker前端开发环境搭建

docker 做本地开发环境的好处&#xff1a; 隔离环境 各项目所需node等版本不一&#xff0c;切换起来比较麻烦&#xff0c;虽用 nvm可 来解决&#xff0c;但使用 docker 更优 快速配置环境 新电脑&#xff0c;新系统&#xff0c;新环境&#xff0c;第一件事就是配置开发环境。下…