Spring Bean加载过程和引生问题

目录

spring bean加载过程

1、容器启动

2、Bean创建阶段

spring如何解决循环依赖


spring bean加载过程

spring ioc创建bean大体是两个步骤

1、容器启动

2、Bean创建阶段

1、容器启动

bean的注册,最终产物就是注册到BeanDefinationRegistry中的一个个BeanDefination。

通过以下5步进行预热,为后面Bean的实例化做准备。

1、配置对象元信息文件 <bean> <property /> </bean>

2、BeanDefination

把配置的元信息加载到内存,内存中表示这些配置元信息的方式就是BeanDefination

3、BeanDefinationReader

读配置的元数据信息,加载配置的元信息,将其转换为内存形式的BeanDefination

4、BeanDefinationRegistry

对BeanDefination进行注册,通过特定的bean定义的ID映射到相应的BeanDefination

5、BeanFactoryPostProcessor

配置文件的通配符${}数据转化为实际的数据值

2、Bean创建阶段

spring如何解决循环依赖

1、Spring是通过三级缓存来解决上述问题的

一级缓存: singletonObjects存储的是所有创建好了的单例Bean
二级缓存:earlySingletonObjects完成实例化,但是还未进行属性注入及初始化的对象
三级缓存:singletonFactories提前暴露的一个单例工厂,二级缓存中存储的就是从这个工厂中获取到的对象。
 

为什么要有三级缓存:

原文地址:Spring的Bean加载流程_张维鹏的博客-优快云博客_spring bean加载过程 

循环依赖解决:

Spring如何解决循环依赖问题_张维鹏的博客-优快云博客_spring解决循环依赖的问题

Spring如何解决循环依赖_飘飘~的博客-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值