Spring是如何缓存单例bean

Spring在初始化时会将所有非懒加载的单例bean实例化并缓存。在`AbstractApplicationContext.refresh()`方法中,通过`finishBeanFactoryInitialization()`确保单例bean的初始化。`preInstantiateSingletons()`方法负责预实例化单例bean,将其存储在bean工厂的缓存中。当请求bean时,Spring首先检查单例缓存,若存在则直接返回,否则从常规bean缓存中获取。
摘要由CSDN通过智能技术生成

1)//通过调试可以发现,Spring的IOC容器,在装载配置文件的时候,就已经将bean实例化到内存中,要么是以单例,要么是以原型的
   //的方式缓存到内存之中。
   AbstractApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
   applicationContext.getBean("publicBean");
   applicationContext.getBean("publicBean");
   ///AbstractApplicationContext applicationContextCopy=new ClassPathXmlApplicationContext("applicationContext.xml");
   //要获取bean的时候,是直接到内存中去拿bean的。
   //applicationContextCopy.getBean("publicBean");

2)首先Spring在加载完资源文件之后,就已经把bean实例化,并且放在缓存之中。

     在AbstractApplicationContext的refresh()方法中,缓存单例的bean。

// Instan

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

架构随笔录

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值