当前位置: 首页 > news >正文

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

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.lryc.cn/news/27424.html

相关文章:

  • 无聊小知识.03 Springboot starter配置自动提示
  • 2023-03-03 mysql-join类别-分析
  • Saleen 系列来袭!
  • 如何优雅地处理Java中的null值?使用Optional类来实现!
  • 巾帼绽芬芳 一起向未来(中篇)
  • espnet training
  • qsort函数的应用以及模拟实现
  • 【iobit 软件】家族系列 - 正版激活码
  • ACM-大一训练第三周(Floyd算法+并查集算法专题训练)
  • taobao.item.sku.update( 更新SKU信息 )
  • ros2创建一个工程
  • 【力扣】stack容器的探索之有效的括号
  • 【Elsevier出版社】中科院2区,SCIEEI 双检,已有发表案例,3个月左右录用
  • 基于明道云平台重建医院管理流程
  • 【蓝桥杯嵌入式】STM32定时器的配置,解析预分频系数和重装载值与时钟频率的关系
  • ChatGPT API 低价上线,开发者可以人手一个了?
  • 品牌营销策略 | 科学经营合作伙伴关系的5个要素
  • 【剑指offer-C++】JZ20:表示数值的字符串
  • 【NLP相关】深度学习领域不同编程IDE对比
  • 定制ubuntu的docker镜像
  • 我的 System Verilog 学习记录(8)
  • 详解JAVA字节码
  • 前端利用emailjs发送邮件
  • 16 Nacos服务端服务注册源码分析
  • Spring Boot2中如何优雅地个性化定制Jackson
  • 2023年全国最新食品安全管理员精选真题及答案11
  • 【脚本】用于得到某个文件/文件夹所有文件的存储大小(MB单位)
  • 19- CNN进行Fashion-MNIST分类 (tensorflow系列) (项目十九)
  • 【正点原子FPGA连载】第二十二章IP封装与接口定义实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南
  • 【ElasticSearch8.X】学习笔记(二)