1.缓存有三级缓存
在bean实例化流程中 DefaultSingletonBeanRegistry类的getSingleton
一级缓存:singletonObjects
二级缓存:earlySingletonObjects
三级缓存:singletonFactories
2.bean是单例的、并且是非懒加载的、并且是非抽象的,Spring容器启动时就已经实例化,
regresh————finishBeanFactoryInitialization(beanFactory)——
if (!bd.isAbstract() && bd.isSingleton() && !bd.isLazyInit()) {
所以 ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
Student student = (Student) applicationContext.getBean("student"); 就是去缓存拿
Spring源码之缓存
最新推荐文章于 2023-02-27 22:13:50 发布